📅  最后修改于: 2023-12-03 15:13:21.877000             🧑  作者: Mango
在Android开发中,有时候需要检测屏幕状态来进行相应的操作,例如:当屏幕亮起时,自动打开某个应用或播放音乐,或者当屏幕关闭时,停止音乐或者关闭一些资源。
这时,我们可以使用意图广播接收器来检测屏幕状态,并且对应用进行相应的操作。下面给出具体的实现步骤和示例代码。
创建一个类来继承 BroadcastReceiver,重写其 onReceive() 方法。
在 onReceive() 方法中,获取到广播意图中的系统广播值,并根据其值来进行相应的操作。
· Intent.ACTION_SCREEN_ON:屏幕亮起时触发,可以在这里处理自己的业务逻辑。
· Intent.ACTION_SCREEN_OFF:屏幕关闭时触发,可以在这里处理自己的业务逻辑。
在 AndroidManifest.xml 中注册广播接收器。
public class ScreenBroadcastReceiver extends BroadcastReceiver {
private String TAG = "ScreenBroadcastReceiver";
private boolean isScreenOff;
@Override
public void onReceive(Context context, Intent intent) {
switch (intent.getAction()) {
case Intent.ACTION_SCREEN_ON:
Log.i(TAG, "Screen turned on");
isScreenOff = false;
// do your business logic here
break;
case Intent.ACTION_SCREEN_OFF:
Log.i(TAG, "Screen turned off");
isScreenOff = true;
// do your business logic here
break;
}
}
}
<receiver android:name=".ScreenBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.SCREEN_OFF" />
<action android:name="android.intent.action.SCREEN_ON" />
</intent-filter>
</receiver>
通过上面的示例代码,我们可以非常容易地检测屏幕状态,并且在检测到相应的状态后,处理自己的业务逻辑。这种方式非常灵活,可以用于很多应用场景。