RK3288 无法监听系统屏幕关闭广播

怎么可以获取SCREEN_OFF这个广播呢?

可以把相关的测试代码发出来看看。

zhansb 发表于 2015-4-27 10:28
可以把相关的测试代码发出来看看。

public void onCreate() {
		// 屏蔽系统的屏保
		KeyguardManager manager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
		KeyguardManager.KeyguardLock lock = manager
				.newKeyguardLock("KeyguardLock");
		lock.disableKeyguard();

		// 注册一个监听屏幕开启和关闭的广播
		IntentFilter filter = new IntentFilter();
		filter.addAction(Intent.ACTION_SCREEN_ON);
		filter.addAction(Intent.ACTION_SCREEN_OFF);
		registerReceiver(screenReceiver, filter);
	}

	BroadcastReceiver screenReceiver = new BroadcastReceiver() {

		@Override
		public void onReceive(Context context, Intent intent) {
			String action = intent.getAction();
			if (action.equals(Intent.ACTION_SCREEN_ON)) {
				// 屏幕显示
			} else if (action.equals(Intent.ACTION_SCREEN_OFF)) {// 接受到关闭屏幕的广播
				// 开启屏幕唤醒,常亮
				PowerManagerWakeLock.acquire(ScreenSaverS.this);
				PowerManagerWakeLock.acquire(ScreenSaverS.this);
				PowerManagerWakeLock.release();
			}
		}
	};

你在广播里面添加打印看下,代码应该是OK的~

lynn3653 发表于 2015-4-27 11:49
你在广播里面添加打印看下,代码应该是OK的~

已经试过了,RK3288没有接收到这个广播,手机上正常的,应该是系统内部关掉这个广播了吧

wxm396201647 发表于 2015-4-27 12:11
已经试过了,RK3288没有接收到这个广播,手机上正常的,应该是系统内部关掉这个广播了吧

不会是系统内部关闭的。你的固件是TVBOX还是MID版的?你是加了具体的log,还是根据常亮是否设置成功,来判断广播是否接收到

复制你的代码测试了下,正常。。。

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.activity_main);
     // 屏蔽系统的屏保
/*
                       KeyguardManager manager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);

                        KeyguardManager.KeyguardLock lock = manager

                                        .newKeyguardLock("KeyguardLock");

                       lock.disableKeyguard();
*/

                      // 注册一个监听屏幕开启和关闭的广播

         IntentFilter filter = new IntentFilter();

         filter.addAction(Intent.ACTION_SCREEN_ON);

         filter.addAction(Intent.ACTION_SCREEN_OFF);

         registerReceiver(screenReceiver, filter);

    }

    BroadcastReceiver screenReceiver = new BroadcastReceiver() {

    	    @Override

    	    public void onReceive(Context context, Intent intent) {

    	                      String action = intent.getAction();

    	                      if (action.equals(Intent.ACTION_SCREEN_ON)) {

    	                               // 屏幕显示
    	                    	  		Log.i("test", "ACTION_SCREEN_ON----->");

    	                        } else if (action.equals(Intent.ACTION_SCREEN_OFF)) {// 接受到关闭屏幕的广播

    	                               // 开启屏幕唤醒,常亮

    	                         // PowerManagerWakeLock.acquire(ScreenSaverS.this);

    	                          //PowerManagerWakeLock.acquire(ScreenSaverS.this);

                                  //PowerManagerWakeLock.release();
    	                        	Log.i("test", "ACTION_SCREEN_OFF----->");

                      }

    		}

       };

carlinluo 发表于 2015-4-27 15:47
复制你的代码测试了下,正常。。。

请问是在RK3288主板上测试的么?我重新测试了,还是接收不到

风之空响 发表于 2015-4-27 15:31
不会是系统内部关闭的。你的固件是TVBOX还是MID版的?你是加了具体的log,还是根据常亮是否设置成功,来判 …

固件不清楚是哪个,加的事具体的log,但是没有输出

wxm396201647 发表于 2015-4-28 09:58
固件不清楚是哪个,加的事具体的log,但是没有输出

贴一下你机器 设置-》关于里面的截图,我看下什么版本的,我这边测试下先

好的,麻烦你啦 :slight_smile:

wxm396201647 发表于 2015-4-29 13:21
好的,麻烦你啦

我测试还是正常,你按装下我的apk试下,代码和你相同。打开应用,logcat -s TestScreen ,点击电源键关闭唤醒屏幕,看下Log输出

TestScreen.apk (274 KB)