Android 待命式活动
我想为我的设备创建一个备用活动,到目前为止,我创建了一个活动,当调用该活动时,它将关闭我的显示 代码如下:Android 待命式活动,android,ethernet,wakelock,screen-off,Android,Ethernet,Wakelock,Screen Off,我想为我的设备创建一个备用活动,到目前为止,我创建了一个活动,当调用该活动时,它将关闭我的显示 代码如下: public class MainActivity extends Activity { private SensorManager mSensorManager; private PowerManager mPowerManager; private WindowManager mWindowManager; private WakeLock mWakeLock; private But
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\u SCREEN\u off,因此android EthernetService会禁用我的连接。有人知道如何保持连接处于活动状态吗
谢谢;) 从您的问题中,我看到您需要保持以太网服务的活力 首先,如果您在设备上有WiFi连接,并且可以使用WiFi连接,那么这个问题就可以得到解决。在这种情况下,您可以使用WifiLock和部分WakeLock- 但是,如果确实需要使用以太网连接,则可以按照中的说明尝试重新启用以太网连接。但是请注意,在这种情况下,您的设备可能需要根目录 希望这有帮助 我可以点击两次电源按钮打开屏幕(我不知道为什么我会这样做) 让两个人点击按钮两次,但这是次要问题) 这是因为从技术上讲,屏幕在亮度设置为零的情况下仍处于打开状态,所以实际发生的情况是,首先按下电源按钮,然后打开屏幕,这是两次单击 我怀疑只有在第一次按下电源按钮后,连接才被禁用。我看不出在您提供的代码中,您在哪里恢复了屏幕亮度 尝试将screenBrightness设置为0.2而不是0,并监视连接状态或使用日志。下面的代码也应该足够了 关闭屏幕“有点” 重新打开屏幕
WindowManager.LayoutParams params = getWindow().getAttributes();
params.screenBrightness = previousScreenBrightness;
getWindow().setAttributes(params);
我不太确定你在尝试什么,但是有可能把你的连接放到一个持有唤醒锁的服务中吗?如果你正在下载一些东西,那么放下唤醒锁,这样设备就可以完全睡眠了。如果你只是想保持连接打开,那么可能是一个相当严重的电池槽。我的问题是,我需要唤醒我的设备(甚至屏幕),并从我的连接收到一条消息,所以我不能失去连接(我不介意电池问题,屏幕睡眠的唯一需要是节省我的显示器寿命)。如果您持有部分唤醒锁定,则不应禁用internet连接。正如我所发布的,我使用部分唤醒锁定,这仅确保CPU不会进入睡眠状态,但我的以太网接口已禁用。感谢您的回复,很遗憾,我无法使用Wifi。即使你建议的第二种解决方案对我也不好,因为我需要以太网连接来保持活力,而不是先下后上:(不幸的是,这不是我需要的。这样屏幕就不会完全关闭。
WindowManager.LayoutParams params = getWindow().getAttributes();
params.screenBrightness = previousScreenBrightness;
getWindow().setAttributes(params);