首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类似StandBy的活动

类似StandBy的活动
EN

Stack Overflow用户
提问于 2014-12-06 01:33:14
回答 2查看 509关注 0票数 7

我想为我的设备创建一个StandBy活动,到目前为止,我创建了一个活动,当被调用时,它将关闭我的显示器。

代码如下:

代码语言:javascript
复制
public class MainActivity extends Activity {
private SensorManager mSensorManager;
private PowerManager mPowerManager;
private WindowManager mWindowManager;
private WakeLock mWakeLock;
private Button button;
private TextView textView;

/** Called when the activity is first created. */
@Override
public void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    try {
        // Get an instance of the SensorManager
        mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);

        // Get an instance of the PowerManager
        mPowerManager = (PowerManager) getSystemService(POWER_SERVICE);

        // Get an instance of the WindowManager
        mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
        mWindowManager.getDefaultDisplay();

        setContentView(R.layout.activity_main);
        // textView = (TextView)findViewById(R.id.textView1);
        button = (Button) findViewById(R.id.testText);
        button.setOnClickListener(mButtonStopListener);

        mWakeLock = mPowerManager.newWakeLock(
                PowerManager.PARTIAL_WAKE_LOCK, "Your Tag");
        // mWakeLock.acquire();
        final WindowManager.LayoutParams params = getWindow()
                .getAttributes();
        params.screenBrightness = 0;
        getWindow().setAttributes(params);

    } catch (final Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        Log.e("onCreate", e.getMessage());
    }
} // END onCreate

View.OnClickListener mButtonStopListener = new OnClickListener() {
    @Override
    public void onClick(final View v) {
        try {
            if (mWakeLock.isHeld()) {
                mWakeLock.release();
                System.err.println("mWakeLock.release()  onTouch");
            }
        } catch (final Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            Log.e("onPause", e.getMessage());
        }

    }
};

@Override
protected void onResume() {
    super.onResume();

    try {
        if (mWakeLock.isHeld()) {
            System.err.println("mWakeLock.release() onResume");
            mWakeLock.release();
        } else {
            System.err.println("mWakeLock.acquire() onResume");
            mWakeLock.acquire();

        }
    } catch (final Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        Log.e("onResume", e.getMessage());
    }

}

@Override
protected void onPause() {
    super.onPause();


}

}

正如我所说的,这段代码使我能够关闭屏幕,并且我能够打开屏幕,单击两次电源按钮(我不知道为什么我有两次单击按钮两次,但这是一个次要问题)。

主要的问题是,当显示器关闭时,会生成动作ACTION_SCREEN_OFF,因此android EthernetService会禁用我的连接。有人知道如何保持连接活跃吗?

谢谢;)

EN

回答 2

Stack Overflow用户

发布于 2014-12-13 16:47:02

从您的问题中,我看到您需要保持以太网服务处于活动状态。

在这种情况下,您可以将WifiLock与部分WakeLock - see this question一起使用。

但是,如果您确实需要使用以太网连接,则可以尝试使用listening for ACTION_SCREEN_OFF intent,然后按照top reply to this question中的说明尝试重新启用以太网连接。但请注意,在这种情况下,您的设备可能必须是根设备。

希望这能帮上忙..

票数 2
EN

Stack Overflow用户

发布于 2014-12-15 05:43:22

我可以点击两次电源按钮打开屏幕(我不知道为什么我有两次点击按钮两次,但这是一个次要问题)

这是因为从技术上讲,屏幕仍然是开着的,亮度设置为零,所以实际发生的情况是,你先按下第一个电源按钮,然后再按下,这就是两次点击。

我怀疑只有在第一次按下电源按钮后,连接才被禁用。我看不出您提供的代码在哪里恢复了屏幕亮度。

尝试将screenBrightness设置为0.2而不是0,并监视连接状态或使用日志。另外,下面的代码应该足够了。

在某种程度上关闭屏幕

代码语言:javascript
复制
WindowManager.LayoutParams params = getWindow().getAttributes();
params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
previousScreenBrightness = params.screenBrightness;
params.screenBrightness = 0;
getWindow().setAttributes(params);

重新打开屏幕

代码语言:javascript
复制
WindowManager.LayoutParams params = getWindow().getAttributes();
params.screenBrightness = previousScreenBrightness;
getWindow().setAttributes(params);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27321556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档