class HookObserver extends UEventObserver {
private static final String TAG = HookObserver.class.getSimpleName();
private static final boolean LOG = true;
private static final String HOOK_UEVENT_MATCH = "DEVPATH=/devices/virtual/switch/hook"; // sys/devices/virtual/switch/hook
private static final String HOOK_STATE_PATH = "/sys/class/switch/hook/state";
//protected broadcast需要在frameworks/base/core/res/AndroidManifest.xml 文件夹声明一下
public static final String ACTION_HOOK_EVENT = "android.intent.action.HOOK_EVENT";
public static final String EXTRA_HOOK_STATE = "android.intent.extra.HOOK_STATE";
public static final String PROPERTY_HOOK_STATE = "hw.hook.state";
public static final int EXTRA_HOOK_STATE_INIT = -1;
public static final int EXTRA_HOOK_STATE_ON = 0;
public static final int EXTRA_HOOK_STATE_OFF = 1;
private int mHookState = EXTRA_HOOK_STATE_INIT;
private int mPreviousHookState = EXTRA_HOOK_STATE_INIT;
private static final int MSG_HOOK_STATE = 0;
private static final int MSG_SHUTDOWN = 1;
private boolean mSystemReady = false;
//private final CheckBoxPreference mCheckBoxPref;
private boolean flag = true;
private WifiManager wifiManager;
- //AudioManager audioManager;
+ AudioManager mAudioManager;
//private EthernetManager mEthManager;
private final Context mContext;
//MediaPlayer mp = new MediaPlayer();
// private PowerManagerService mPowerManager;
// private final WakeLock mWakeLock; // held while there is a pending route change
// private final WakeLock mCpuWakeLock; // block the CPU go to sleep
private static final String SHUTDOWN_ACTION = "com.jld.shutdown_action";
private static final String SETTIME_ACTION = "com.jld.set_time_action";
public HookObserver(Context context) {
mContext = context;
/* mPowerManager = pms;
PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK|PowerManager.ACQUIRE_CAUSES_WAKEUP, "HookObserver");
mWakeLock.setReferenceCounted(false);
mCpuWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "HookObserver CPU waklock");
mCpuWakeLock.setReferenceCounted(false);
mCpuWakeLock.acquire(); */
- //audioManager =(AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE);
+ mAudioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
init(); // set initial status
//
/* try {
mp.setDataSource("/system/media/boot.wav");
mp.prepare();
mp.start();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Slog.v(TAG, "boot music ok");*/
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_BOOT_COMPLETED);
filter.addAction(SHUTDOWN_ACTION);
filter.addAction(SETTIME_ACTION);
mContext.registerReceiver(mBroadcastReceiver, filter, null, null);
startObserving(HOOK_UEVENT_MATCH);
}
private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (LOG) Slog.v(TAG, "BroadcastReceiver:" + action);
if (action.equals(Intent.ACTION_BOOT_COMPLETED)) {
//add boot music for yong
// setAirplaneModeOn(true);
//delay(10000);
//setAirplaneModeOn(false);
//Slog.v(TAG, "open airplane");
/*if(mp != null){
mp.stop();
mp.release();
}
//Slog.v(TAG, "boot music ok");*/
// don't bother broadcasting undocked here
// if (mHookState != EXTRA_HOOK_STATE_INIT) {
update();
Slog.v(TAG, "hook update"+ mHookState);
// }
+ mAudioManager.setStreamVolume(AudioManager.STREAM_RING, 0, AudioManager.FLAG_PLAY_SOUND);
+ mAudioManager.setStreamVolume(AudioManager.STREAM_ALARM, 0, AudioManager.FLAG_PLAY_SOUND);
+ mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 0, AudioManager.FLAG_PLAY_SOUND);
}else if(action.equals(SHUTDOWN_ACTION)){
Intent intent1 = new Intent(Intent.ACTION_REQUEST_SHUTDOWN);
intent1.putExtra(Intent.EXTRA_KEY_CONFIRM, false);
intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent1);
}else if(action.equals(SETTIME_ACTION)){
long time = intent.getLongExtra("time",0L);
if(time > 0L)
((AlarmManager) context.getSystemService(Context.ALARM_SERVICE)).setTime(time);
}
}
};