我正在开发一个应用程序,其中“当我的应用程序正在运行,用户按下电源按钮”来锁定手机,然后在锁定之前应该播放一个声音。
我在以下链接上搜索了如何执行此操作,但没有得到任何有效的解决方案:
Want to Access Power Button events in android
Disable Screen Lock(Power) Button in Android
Override Power button just like Home button
How to hook into the Power button in Android?
我不想长时间按电源按钮。我只想在应用程序/活动运行时播放自己的音乐&用户按下电源按钮锁定手机。
这是我到目前为止所做的代码:
androidmanifest.xml文件

<uses-permission android:name="android.permission.PREVENT_POWER_KEY" />

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

</application>

main活动.java
package com.example.lockunlocksound;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.KeyEvent;

public class MainActivity extends Activity {

static MediaPlayer mp;

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


@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {

    if (keyCode == KeyEvent.KEYCODE_POWER) {
        // Do something here...
        mp= MediaPlayer.create(this, R.raw.click123);
        mp.start();
        return true;
    }

    return super.onKeyDown(keyCode, event);
}
}

我上面提到的一些帖子声称可以处理这个问题,但是我没有得到理想的结果。我错在哪里?
我的手机只是被锁了,没有声音。
建议我该怎么做才能解决这个问题?

最佳答案

要实现此目的,您可以创建在用户按下电源按钮时触发的接收器,并在触发接收器时播放音乐:

public class MyBroadCastReciever extends BroadcastReceiver {

    MediaPlayer mediaPlayer = null;

    @Override
    public void onReceive(Context context, Intent intent) {
        mediaPlayer = MediaPlayer.create(context, R.raw.click123);
        mediaPlayer.start();
    }
}

实例化一个Receiver并在创建mainActivity时将其注册:
MyBroadCastReciever myBroadCastReciever = new MyBroadCastReciever();
IntentFilter screenStateFilter = new IntentFilter();
screenStateFilter.addAction(Intent.ACTION_SCREEN_OFF);
registerReceiver(myBroadCastReciever, screenStateFilter);

别忘了在你的主要活动中取消注册:
unregisterReceiver(myBroadCastReciever);

关于android - 在Android中按下电源按钮播放声音,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42778934/

10-09 09:05