首页 > 解决方案 > 检测屏幕原因

问题描述

我有一个可以播放视频的应用程序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.");
        }
    }
}

标签: javaandroidandroid-service

解决方案


推荐阅读