gpt4 book ai didi

android - 如何在android中获得锁屏广播

转载 作者:太空宇宙 更新时间:2023-11-03 11:39:56 25 4
gpt4 key购买 nike

如何在android中触发锁屏或亮屏?

我尝试在广播接收器中使用 SCREEN_OFF 和 SCREEN_ON 操作,但它不起作用。

public void onReceive(Context context, Intent intent) {
Log.d("XYZ", "Screen ON/OFF");

Toast.makeText(context, "screen",10000).show();
if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
.......
}
}

在 Activity 中我已经注册了广播-

屏幕是我的广播接收器的对象

IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
mContext.registerReceiver(screen, filter);

最佳答案

MainActivity.class 中调用 UpdateService.class

startService(new Intent(MainActivity.this, UpdateService.class));

UpdateService.class

public class UpdateService extends Service {

BroadcastReceiver mReceiver;
public static int countOn = 0;
public static int countOff = 0;

@Override
public void onCreate() {
super.onCreate();
// register receiver that handles screen on and screen off logic
Log.i("UpdateService", "Started");
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_ANSWER);
mReceiver = new MyReceiver();
registerReceiver(mReceiver, filter);
}

@Override
public void onDestroy() {

unregisterReceiver(mReceiver);
Log.i("onDestroy Reciever", "Called");

super.onDestroy();
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO Auto-generated method stub
boolean screenOn = intent.getBooleanExtra("screen_state", false);
if (!screenOn) {
Log.i("screenON", "Called");
Log.i("viaService", "CountOn =" + countOn);

Toast.makeText(getApplicationContext(), "Awake", Toast.LENGTH_LONG)
.show();
} else {
Log.i("screenOFF", "Called");
Log.i("viaService", "CountOff =" + countOff);
}


return START_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
}

接收类

public class MyReceiver extends BroadcastReceiver {
private boolean screenOff;

@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
screenOff = true;
// Log.i("via Receiver","Normal ScreenOFF" );
} else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
screenOff = false;
} else if(intent.getAction().equals(Intent.ACTION_ANSWER)) {

}

Intent i = new Intent(context, UpdateService.class);
i.putExtra("screen_state", screenOff);
context.startService(i);
}

}

关于android - 如何在android中获得锁屏广播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19899438/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com