0

「私のアプリが起動しているときにユーザが電源ボタンを押した」というアプリで作業しているときは、ロックする前に音が鳴るはずです。androidの電源ボタンで音を鳴らす

私は以下のリンクをSOにこれを行う方法で検索しましたが、どの作業溶液取得できませんでした: 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?

Iドン電源ボタンを長押ししてみたいです。私はアプリ/アクティビティが実行中のときに私自身の音楽を再生したいだけです&ユーザは電源ボタンを押して電話をロックします。ここで

は、私がこれまで何をやったか私のコードです:

の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> 

MainActivity.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); 
} 
} 

私がこれまでに述べたいくつかの投稿は、これで動作すると主張していますが、希望の出力が得られません。どこが間違っていますか? 私の電話は音を出さずにロックされています。 これを解決するにはどうすればいいですか?

答えて

0

ユーザーが電源ボタンを押したときにトリガーされる受信機を作成し、その受信機がトリガされたときに音楽を再生できることを達成するために:

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(); 
    } 
} 

は、レシーバをインスタンス化し、あなたのMainActivityののonCreate内に登録:

MyBroadCastReciever myBroadCastReciever = new MyBroadCastReciever(); 
IntentFilter screenStateFilter = new IntentFilter(); 
screenStateFilter.addAction(Intent.ACTION_SCREEN_OFF); 
registerReceiver(myBroadCastReciever, screenStateFilter); 

そして、あなたのMainActivityのonDestroy内側にそれを登録解除することを忘れないでください:

unregisterReceiver(myBroadCastReciever); 
+0

ありがとうございます。 –

関連する問題