Android广播接收器不工作(带两个接收器)

时间:2015-03-17 03:29:07

标签: java android performance android-intent broadcastreceiver

我有两个BroadcastReceiver,现在只有一个正在工作。

清单

<receiver
    android:name="com.example.basicplayerapp.core.AudioJackReceiver"
    android:enabled="true"
    android:exported="true" >
    <intent-filter>
        <action android:name="android.intent.action.HEADSET_PLUG" />
    </intent-filter>
</receiver>



<!-- WebSocket -->
<receiver 
    android:name="com.example.basicplayerapp.core.NetworkReceiver">
   <intent-filter >
       <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
   </intent-filter> 
</receiver>
<service android:name="com.example.basicplayerapp.core.WebSocketServices"></service>

当我只有AudioJackReceiver时,它可以完美运行。现在我添加了NetworkReceiver AudioJackReceiver停止了工作。请任何建议。感谢。

onCreate of the Video Activity

if (HEADSET_ONLY) { myAudioJackReceiver = new AudioJackReceiver(); }

AudioJackReceiver

public class AudioJackReceiver extends BroadcastReceiver {
    public static final String TAG = AudioJackReceiver.class.getSimpleName();



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

        AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);


        if (intent.getAction().equals(Intent.ACTION_HEADSET_PLUG)) {

            int state = intent.getIntExtra("state", -1);
            switch (state) {

            case 0:
                audio.setStreamMute(AudioManager.STREAM_MUSIC, true);
                Toast.makeText(context, "Please plug in your headset to enjoy the sound.", Toast.LENGTH_LONG).show();
                makeLog("i", "Headset is unplugged");
                break;


            case 1:
                audio.setStreamMute(AudioManager.STREAM_MUSIC, false);
                makeLog("i", "Headset is plugged");
                break;


            default:
                makeLog("i", "I have no idea what the headset state is");
                Toast.makeText(context, "ERROR => I have no idea what the headset state is", Toast.LENGTH_LONG).show();
            }
        }



    }//end onReceive

NetworkReceiver

public class NetworkReceiver extends BroadcastReceiver {
    public static final String TAG = NetworkReceiver.class.getSimpleName();

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i(TAG, "onReceive");

        ConnectivityManager conn =  (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = conn.getActiveNetworkInfo();

        if (networkInfo != null && networkInfo.getDetailedState() == NetworkInfo.DetailedState.CONNECTED) {
            Log.i(TAG, "connected");

            Intent startServiceIntent = new Intent(context, WebSocketServices.class);
            context.startService(startServiceIntent);

        } 
        else if(networkInfo != null){
            NetworkInfo.DetailedState state = networkInfo.getDetailedState();
            Log.i(TAG, state.name());
        }
        else {
            Log.i(TAG, "lost connection");

        }

    }//end onReceive    
};//end NetworkReceiver

0 个答案:

没有答案