1.在frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java中添加广播接收器
filter.addAction(ACTION_DEMO);
filter.addAction("com.android.CLOSE_FLASH");
context.registerReceiverAsUser(mBroadcastReceiver, UserHandle.ALL, filter, null, null);
2.在广播接收器中处理事件
else if("com.android.CLOSE_FLASH".equals(action)){
mFlashlightController.setFlashlight(false);//关闭电筒
updateSpanelView();//更新界面
}
public void updateSpanelView(){
if (mQSPanel != null) {
final QSTileHost qsh = new QSTileHost(mContext, this,
mBluetoothController, mLocationController, mRotationLockController,
mNetworkController, mZenModeController, mHotspotController,
mCastController, mFlashlightController,
mUserSwitcherController, mKeyguardMonitor,
mSecurityController,
/// M: add HotKnot in quicksetting
mHotKnotController,
/// M: add AudioProfile in quicksetting
mAudioProfileController,
/// M: add DataConnection in quicksetting
mDataConnectionController
);
mQSPanel.setHost(qsh);
mQSPanel.setTiles(qsh.getTiles());
mBrightnessMirrorController = new BrightnessMirrorController(mStatusBarWindow);
mQSPanel.setBrightnessMirror(mBrightnessMirrorController);
mHeader.setQSPanel(mQSPanel);
qsh.setCallback(new QSTileHost.Callback() {
@Override
public void onTilesChanged() {
mQSPanel.setTiles(qsh.getTiles());
}
});
}
}
3.在需要的地方发送广播
Intent in = new Intent();
in.setAction("com.android.CLOSE_FLASH");
mActivity.sendBroadcast(in);
mHandler.sendEmptyMessageDelayed(OPEN_CAMERA_AGAIN, 100);