亲宝软件园·资讯

展开

Android检测实体按键事件并屏蔽 Android实现检测实体按键事件并屏蔽

tracydragonlxy 人气:0
想了解Android实现检测实体按键事件并屏蔽的相关内容吗,tracydragonlxy在本文为您仔细讲解Android检测实体按键事件并屏蔽的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:Android检测实体按键事件,Android实体按键事件屏蔽,Android检测按键事件,下面大家一起来学习吧。

效果图:

新建服务类MyKeyEventService.java。用于监听电源键的触发。

public class MyKeyEventService extends Service {

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        final IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
        filter.addAction(Intent.ACTION_SCREEN_OFF);
        filter.addAction(Intent.ACTION_USER_PRESENT);
        final BroadcastReceiver mReceiver = new MainActivity.ScreenReceiver();
        registerReceiver(mReceiver, filter);
        return super.onStartCommand(intent, flags, startId);
    }

    public class LocalBinder extends Binder {
        MyKeyEventService getService() {
            return MyKeyEventService.this;
        }
    }

}

注册服务类,AndroidManifest.xml文件。

<service android:name=".MyKeyEventService">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</service>

主界面MainActivity.java。

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MyKeyEvent";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        startService(new Intent(this, LockService.class));

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        stopService(new Intent(MainActivity.this, LockService.class));
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        switch (keyCode) {
            case KeyEvent.KEYCODE_VOLUME_UP:
                Log.i(TAG, "onKeyDown: vol+ down");
                return true;
//                break;

            case KeyEvent.KEYCODE_VOLUME_DOWN:
                Log.i(TAG, "onKeyDown: vol- down");
                return true;
//                break;

            case KeyEvent.KEYCODE_POWER:
                Log.i(TAG, "onKeyDown: power down");
                return true;
//                break;

            default:
                break;
        }
        return super.onKeyDown(keyCode, event);
    }

    @Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        switch (keyCode) {
            case KeyEvent.KEYCODE_VOLUME_UP:
                Log.i(TAG, "onKeyDown: vol+ up");
                return true;
//                break;

            case KeyEvent.KEYCODE_VOLUME_DOWN:
                Log.i(TAG, "onKeyDown: vol- up");
                return true;
//                break;

            case KeyEvent.KEYCODE_POWER:
                Log.i(TAG, "onKeyDown: power up");
                return true;
//                break;

            default:
                break;
        }
        return super.onKeyUp(keyCode, event);
    }

    static class ScreenReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(final Context context, final Intent intent) {
//            Log.e(TAG, "onReceive " + intent.getAction());
            if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
                // do whatever you need to do here
                Log.e(TAG, "Screen Off");

            } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
                // and do whatever you need to do here
                Log.e(TAG, "Screen On");

            }
        }
    }

}

如果不想屏蔽系统按键事件,则把**return true;**加上注释。

加载全部内容

相关教程
猜你喜欢
用户评论