最近在做android上的游戏,现在遇到一个问题,游戏运行中若点击电源键锁屏,希望解锁后直接返回到先前的游戏运行状态,可是现在只能返回到游戏初始的菜单选择界面。
后来查了下网上一些资料说电源键的响应被系统直接截获,只能通过截获android.intent.action.SCREEN_ON和OFF,但是研究了一段时间依然不能解决。特来求助大家,最好能详细一些,给一些关键性代码。

解决方案 »

  1.   

    你都知道了是 android.intent.action.SCREEN_ON和OFF ,,处理中遇到什么问题了?哪里不能解决?
      

  2.   


    谢谢您的回复,现在是这样
    我可以收到SCREEN_ON和OFF的广播,但进行了下面这个处理(网上搜得)
    pm = ( PowerManager ) getSystemService ( GameActivity.this.POWER_SERVICE );
    wakeLock = pm.newWakeLock( PowerManager.PARTIAL_WAKE_LOCK, "CallLogsService" );
    本想CPU可以继续运行,但是锁屏后Activity进程直接杀死了,原来的游戏进程也就没了,再onResume也只是重启游戏。所以现在我想要的是要做的就是锁屏后再解锁,游戏还原为原来进行中的画面,也即原进程保留解锁后继续。
    谢谢帮助,拜谢啦
      

  3.   

    电源键的响应是被android系统自个截获了,真的要改的话,只能改底层Hal了
      

  4.   

    androidManifest.xml文件中,activity属性处,添加“android:configChanges = "keyboardHidden|orientation"”,就行了,代码中不用其他的任何处理了。
      

  5.   

    LZ,请教下,我怎么收不到android.intent.action.SCREEN_ON和OFF的广播?我是这样写的:<receiver android:name=".filter.BroadcastReceiver">
    <intent-filter>
    <action android:name="android.intent.action.SCREEN_OFF"/>
    <action android:name="android.intent.action.SCREEN_ON"/>
    </intent-filter>
    </receiver>
    <uses-permission android:name="android.permission.DEVICE_POWER"/>
    if(action.equals(Intent.ACTION_SCREEN_ON)
    || action.equals(Intent.ACTION_SCREEN_OFF)){
    //....
    }
      

  6.   

    6楼正解,设置那个东西后,activity就不会重新oncreat()了。返回是直接是onresume()的。就能达到回到正在游戏的界面的吧