java - 检测屏幕原因
问题描述
我有一个可以播放视频的应用程序ACTION_SCREEN_ON
。但是,如果屏幕打开的原因是来电,我不想播放视频。我试图检测传入的电话,TelephonyManager.ACTION_PHONE_STATE_CHANGED
但我不能。怎么能做到这一点?你可以在下面找到我的代码。
服务.java
public class Services extends Service {
private BroadcastReceiver sReceiver;
public IBinder onBind(Intent arg){
return null;
}
public int onStartCommand(Intent intent,int flag, int startIs) {
IntentFilter filter=new IntentFilter(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
//TelephonyManager.ACTION_PHONE_STATE_CHANGED ????
sReceiver=new Receivers();
registerReceiver(sReceiver,filter);
return START_STICKY;
}
}
接收器.java
public class Receivers extends BroadcastReceiver {
public void onReceive(Context context, Intent intent){
if(intent.getAction().equals(Intent.ACTION_SCREEN_ON)){
Log.e("Log", "The screen is on.");
Intent i = new Intent(context.getApplicationContext(), CommercialVideo.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
else{
Log.e("Log", "The screen is off.");
}
}
}
解决方案
推荐阅读
- python - 在python中为类属性指定条件
- bash - 我想创建一个具有当前日期的文件夹并将文件本地 ec2 实例复制到新创建的文件夹,我想每天都自动执行此操作
- java - 代码帮助 - 使用扫描仪初始化字符串数组。显示时,数组值全部为空
- javascript - 如何在 Javascript 中获取 NET 错误
- c# - CSharpFunctionalExtensions 和面向铁路的编程
- javascript - 通过匹配值组合对象数组
- c++ - 为什么我的字符串打印在错误的位置?
- sql-server - 是否可以生成 SQL 脚本来仅为 EF 映射创建存储过程?
- python-2.7 - 是否可以在应用引擎数据存储上同时使用 db 和 ndb 缓存?
- c++ - Bredis 0.07 - 发送带有多个条目的 HMSET 命令