Android 5.0ステータスバー通知アイコンの実装
Android 5.0ステータスバー通知アイコンの実装私の前のブログ記事にはAndroid 5について紹介されています.0ドロップダウン通知バーショートカットスイッチの追加は、Android 5.0ステータスバー通知アイコンの実装に関する知識点に関連しています.そこで今回は、この機能がどのように実現されているのかを簡単にご紹介します.私の前のブログを知りたいなら、Android 5を開くことができます.0プルダウン通知バーショートカットスイッチの追加(必見)
Android 5.0ステータスバー通知アイコンの実装は、簡単に言えばブロードキャストを利用し、SystemUI関連の場所で処理すればよい.ここでは、まず、FMを開いたり閉じたりする場所でブロードキャストを送信する必要があります.
放送を送信する場所が処理され、次はSystemUIで放送を受信します.次のパスを開きます:frameworks/base/packages/systemUI/src/com/android/systemui/statusbar/phone/iPhone StatusBarPolicy.JAvaこのjavaファイルでまずString値を定義します
登録し、放送を傍受し、画像表示を実現します.
ここでupdateFmSendという方法を見てみましょう.主に放送されてきたStateの値を判断します.コードは簡単で、ステータス値がtrueの場合はアイコンを開き、そうでない場合はアイコンを閉じます.OK!前のブログの文章と結びつけて見ると、あなたに役に立つと信じています.
Android 5.0ステータスバー通知アイコンの実装は、簡単に言えばブロードキャストを利用し、SystemUI関連の場所で処理すればよい.ここでは、まず、FMを開いたり閉じたりする場所でブロードキャストを送信する必要があります.
if(on) {//FM
Log.i("lyj_redio","power is on");
Settings.System.putInt(MainActivity.this.getContentResolver(), Settings.System.FM_SYSTEMUI, 0);
mFMTxService.powerOn();
//M:lyj
Intent intent = new Intent("fm_send");
intent.putExtra("state", true);
MainActivity.this.sendBroadcast(intent);
}
else {//FM
Settings.System.putInt(MainActivity.this.getContentResolver(), Settings.System.FM_SYSTEMUI, 1);
mFMTxService.powerOff();
Intent intent = new Intent("fm_send");
intent.putExtra("state", false);
MainActivity.this.sendBroadcast(intent);
}
放送を送信する場所が処理され、次はSystemUIで放送を受信します.次のパスを開きます:frameworks/base/packages/systemUI/src/com/android/systemui/statusbar/phone/iPhone StatusBarPolicy.JAvaこのjavaファイルでまずString値を定義します
private static final String SLOT_FM_SEND = "fm_send";
登録し、放送を傍受し、画像表示を実現します.
//
private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
....
if(action.equals(SLOT_FM_SEND)) {
updateFmSend(intent);
}
....
}
};
//
private final void updateFmSend(Intent intent) {
boolean state = intent.getBooleanExtra("state", true);
Log.i("lyj_system", "FMstate = "+state);
if (state) {//
mService.setIcon(SLOT_FM_SEND, R.drawable.stat_sys_headset_with_mic, 0, null);// FM
mService.setIconVisibility(SLOT_FM_SEND, true);
}else {
mService.setIconVisibility(SLOT_FM_SEND, false);
}
}
//
public PhoneStatusBarPolicy(Context context, CastController cast, HotspotController hotspot) {
mContext = context;
mCast = cast;
mHotspot = hotspot;
mService = (StatusBarManager)context.getSystemService(Context.STATUS_BAR_SERVICE);
// listen for broadcasts
IntentFilter filter = new IntentFilter();
//M:lyj add
filter.addAction(SLOT_FM_SEND);
....
}
ここでupdateFmSendという方法を見てみましょう.主に放送されてきたStateの値を判断します.コードは簡単で、ステータス値がtrueの場合はアイコンを開き、そうでない場合はアイコンを閉じます.OK!前のブログの文章と結びつけて見ると、あなたに役に立つと信じています.