package com.zhou.android.main; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.database.Cursor; import android.media.AudioManager; import android.media.MediaPlayer; import android.media.RingtoneManager; import android.net.Uri; import android.support.v4.content.LocalBroadcastManager; import android.text.TextUtils; import android.util.Log; import android.view.View; import android.widget.Toast; import com.zhou.android.R; import com.zhou.android.common.BaseActivity; public class BroadcastReceiverActivity extends BaseActivity { public final String TAG = "zhou"; private TestReceiver testReceiver, testReceiver2; private MediaPlayer mp; private String uri = ""; @Override protected void setContentView() { setContentView(R.layout.activity_broadcast); testReceiver = new TestReceiver(); IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction("LocalBroadcast"); intentFilter.addAction("Broadcast"); // intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); LocalBroadcastManager.getInstance(this).registerReceiver(testReceiver, intentFilter); testReceiver2 = new TestReceiver(); registerReceiver(testReceiver2, intentFilter); RingtoneManager rm = new RingtoneManager(this); rm.setType(RingtoneManager.TYPE_NOTIFICATION); Cursor cursor = rm.getCursor(); if (cursor.moveToFirst()) { uri = cursor.getString(RingtoneManager.URI_COLUMN_INDEX) + "/" + cursor.getString(RingtoneManager.ID_COLUMN_INDEX); } if (TextUtils.isEmpty(uri)) uri = "content://media/internal/audio/media/0"; mp = new MediaPlayer(); // mp.reset(); // try { // mp.setDataSource(this, Uri.parse(uri)); // mp.setAudioStreamType(AudioManager.STREAM_NOTIFICATION); // mp.setLooping(true); //// mp.prepare(); // } catch (IOException e) { // e.printStackTrace(); // } } @Override protected void init() { } @Override protected void addListener() { } public void onClick(View v) { int id = v.getId(); if (R.id.btn_local == id) { LocalBroadcastManager.getInstance(this).sendBroadcast(new Intent("LocalBroadcast")); Log.d(TAG, "Local send."); } else if (R.id.btn_system == id) { sendBroadcast(new Intent("Broadcast")); Log.d(TAG, "System send."); } else if (R.id.btn_start == id) { try { if (mp != null && mp.isPlaying()) return; mp = new MediaPlayer(); mp.setDataSource(this, Uri.parse(uri)); mp.setAudioStreamType(AudioManager.STREAM_NOTIFICATION); mp.setLooping(true); mp.prepare(); mp.start(); } catch (Exception e) { e.printStackTrace(); } } else if (R.id.btn_stop == id) { if (mp != null) { mp.stop(); mp.release(); mp = null; } } } @Override protected void onDestroy() { super.onDestroy(); if (testReceiver != null) { LocalBroadcastManager.getInstance(this).unregisterReceiver(testReceiver); testReceiver = null; } if (testReceiver2 != null) { unregisterReceiver(testReceiver2); testReceiver2 = null; } } class TestReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals("LocalBroadcast")) { Toast.makeText(context, "Local Broadcast", Toast.LENGTH_LONG).show(); } else if (action.equals("Broadcast")) { Toast.makeText(context, "System Broadcast", Toast.LENGTH_LONG).show(); // } else if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) { // ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); // NetworkInfo info = cm.getActiveNetworkInfo(); // if (info != null && info.isAvailable()) { // String name = info.getTypeName(); // Toast.string(BroadcastReceiverActivity.this, name + "", Toast.LENGTH_LONG).show(); // } } } } }