0

着信コール用のカスタム UI を開発しています。私はこれでほぼ完了しましたが、画面がオンでユーザーに着信がある場合にのみ、カスタム UI アクティビティをロードしたいと考えています。これらすべてを BroadcastReceiver (android.intent.action.PHONE_STATE) で行っています。BrodcastReceiver から画面のオン/オフの状態を取得することは可能ですか。

http://thinkandroid.wordpress.com/2010/01/24/handling-screen-off-and-screen-on-intents/の例に従おうとしましたが、BroadcastReceiver からレシーバーを登録するとコンパイル時にエラーが発生します。

私に提案してください。

public class MyPhoneReceiver extends BroadcastReceiver {

     @Override
     public void onReceive(Context context, Intent intent) {


          IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
          filter.addAction(Intent.ACTION_SCREEN_OFF);
          BroadcastReceiver mReceiver = new MyScreenReceiver();
          registerReceiver(mReceiver, filter); //this gives error "The method registerReceiver(BroadcastReceiver, IntentFilter) is undefined for the type MyPhoneReceiver"


     }
}

マニフェスト.xml

<receiver android:name="MyPhoneReceiver" >
     <intent-filter>
          <action android:name="android.intent.action.PHONE_STATE"/>
     </intent-filter>
</receiver>

ありがとう

4

2 に答える 2

1

registerReceiver() は Context のメソッドなので、呼び出す必要がありますcontext.registerReceiver(mReceiver, filter);

ただし、次のことができます。

public class MyPhoneReceiver extends BroadcastReceiver {

     @Override
     public void onReceive(Context context, Intent intent) {

        PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
        if(pm.isScreenOn())
        {
            // load your UI
        }

     }
}
于 2012-10-10T11:41:03.420 に答える
0

ここにあなたの質問に対する解決策があります..

public static boolean wasScreenOn = true;

@Override
public void onReceive(Context context, Intent intent) {
   if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
        // DO WHATEVER YOU NEED TO DO HERE
        wasScreenOn = false;
    } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
        // AND DO WHATEVER YOU NEED TO DO HERE
        wasScreenOn = true;
    }

}
于 2012-10-10T10:38:43.493 に答える