2013-02-20 31 views
0

我試圖編寫一個代碼,每當用戶按下按鈕上的電源並將睡眠狀態恢復爲睡眠狀態時,如果應用程序正在運行,它應播放聲音否則沒有任何反應每次用戶按下電源時播放聲音(用戶從睡眠中恢復移動電話)

我想我需要一個廣播接收器,它檢查它的功率:ON被按下,而不是POWER:OFF並播放聲音。稍後將與異步任務相關。

如何達到上述要求。請給我建議一些方法。
我不想使用服務,因爲即使應用程序未運行,它也會繼續運行。

而且我希望它只在應用程序在後臺運行時運行,因此BroadCast Receiver。

我很喜歡android。
請幫忙。
在此先感謝。

import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.app.Activity; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 

public class MainActivity extends Activity { 


    MediaPlayer mp3; 

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

     mp3=MediaPlayer.create(this, R.raw.sound); 


    } 






    public class YourReceiver extends BroadcastReceiver { 

     @Override 
     public void onReceive(Context arg0, Intent arg1) { 
      // do what you want when the screen is turned back on 

      mp3.start(); 
     } 
    } 

} 

回答

1

您可以在清單文件中註冊BroadcastReceiver以偵聽何時按下電源按鈕。這將告訴系統您有一個名爲your.package.YourReceiver的類,當按下電源按鈕以打開上的時,它想要執行某些操作。

<receiver android:name="your.package.YourReceiver"> 
    <intent-filter> 
     <action android:name="android.intent.action.SCREEN_ON"></action> 
    </intent-filter> 
</receiver> 

然後你必須創建一個類來處理事件。這是收到廣播時將運行的代碼。

public class YourReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context arg0, Intent arg1) { 
     // do what you want when the screen is turned back on 
    } 
} 

注...

如果你需要處理的電源按鈕按下它可以將屏幕關在您的清單使用本。

<action android:name="android.intent.action.SCREEN_OFF"></action> 

您可以使用其中一種或另一種或兩種。

+0

謝謝傑森。我已經編輯了上面的整個代碼。我不知道如何調用該類。請幫助。 – 2013-02-20 18:51:14

+0

我很抱歉的麻煩,但我真的很感謝幫助。 – 2013-02-20 19:04:08

+0

當用戶點擊電源按鈕時,系統會自動爲你調用'onRecieve()'方法。 – 2013-02-20 23:45:21