package com.qmusic.localplugin; import java.util.WeakHashMap; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import com.qmusic.common.BConstants; import com.qmusic.common.IAsyncDataCallback; public class HeadsetPlug extends BasePlug { Context ctx; IntentFilter intentFilter; HeadsetPlugReceiver headsetPlugReceiver; int state; WeakHashMap<IAsyncDataCallback, Object> callbacks; boolean isEnabled; @Override public void init(Context ctx) { this.ctx = ctx; headsetPlugReceiver = new HeadsetPlugReceiver(); intentFilter = new IntentFilter(); intentFilter.addAction("android.intent.action.HEADSET_PLUG"); ctx.registerReceiver(headsetPlugReceiver, intentFilter); } @Override public void destory() { ctx.unregisterReceiver(headsetPlugReceiver); } /** * * @return 1 has headset; 0 no headset */ public int getState() { return state; } public boolean isEnabled() { return isEnabled; } public void setCallback(IAsyncDataCallback callback) { if (callbacks == null) { callbacks = new WeakHashMap<IAsyncDataCallback, Object>(); } callbacks.put(callback, null); } public void setEnabled(boolean isEnabled) { this.isEnabled = isEnabled; if (isEnabled && state == 1) { // TODO } } public void removeCallback(IAsyncDataCallback callback) { callbacks.remove(callback); } public class HeadsetPlugReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.hasExtra("state")) { state = intent.getIntExtra("state", 0); if (isEnabled) { if (state == 1) { // TODO } if (callbacks != null) { for (IAsyncDataCallback cal : callbacks.keySet()) { cal.callback(BConstants.MSG_RESULT_OK, state); } } } } } } }