Android四大组件之四:BroadcastReceiver 广播接收器
来源:互联网 发布:上瘾网络剧见面会 编辑:程序博客网 时间:2024/04/29 10:51
1.BroadcastReceiver 广播接收器 (Android四大组件之一)
[1]用途:接收广播。可以接收系统广播,可以接收其它应用程序的广播,可以接收其它组件的广播。
[2]生命周期:只有十秒种,不能在广播接收器中做耗时的操作。
[3]注意:如果接收系统广播,需要添加权限。
接收广播的种类在清单文件中设置
<intent-filter >
<!-- 设置广播接收器可以接收开机广播 -->
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
2.Android多媒体编程
[1]多媒体文件:图片文件 png jpg gif
音频 mp3 ogg mid
视频 mp4 3gp
[2]音乐播放器 MediaPlayer --- 播放音乐
SoundPlayer --- 播放音效
[3]MediaPlayer 从sdcard载入音乐文件
MediaPlayer.create(this, R.raw.music_01) 从res/raw下载入音乐文件
start() 播放音乐
[1]用途:接收广播。可以接收系统广播,可以接收其它应用程序的广播,可以接收其它组件的广播。
[2]生命周期:只有十秒种,不能在广播接收器中做耗时的操作。
[3]注意:如果接收系统广播,需要添加权限。
接收广播的种类在清单文件中设置
<intent-filter >
<!-- 设置广播接收器可以接收开机广播 -->
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
package com.farsight.broadcastreceiver;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.sax.StartElementListener;import android.widget.Toast;public class MyReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stubString info = intent.getStringExtra("info");Toast.makeText(context, "收到广播:"+info, Toast.LENGTH_SHORT).show();Intent intentA = new Intent();intentA.setClass(context, Android_39_BroadcastReceiverActivity.class);//在非Activity组件中启动活动,需要加标记intentA.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(intentA);}}
package com.farsight.activityandservice;import android.app.Activity;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.TextView;public class Android_41_ActivityAndServiceActivity extends Activity implements OnClickListener {TextView tv;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);// Activity组件接收Service组件发送的广播// Service 向 Activity 发送广播//在当前activity对象上注册广播接收器this.registerReceiver(myReceiver, new IntentFilter("com.farsight.activityandservice.activity"));findViewById(R.id.button1).setOnClickListener(this);tv = (TextView) findViewById(R.id.textView1);}MyReceiver myReceiver = new MyReceiver();class MyReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stubint count = intent.getIntExtra("count", -1);tv.setText(String.valueOf(count));}}@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();//注销广播接收器this.unregisterReceiver(myReceiver);}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intent = new Intent();intent.setClass(this, MyService.class);startService(intent);}}
package com.farsight.activityandservice;import android.app.Service;import android.content.Intent;import android.os.IBinder;public class MyService extends Service implements Runnable {@Overridepublic IBinder onBind(Intent intent) {// TODO Auto-generated method stubreturn null;}@Overridepublic void onCreate() {// TODO Auto-generated method stubsuper.onCreate();new Thread(this).start();}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {// TODO Auto-generated method stubreturn super.onStartCommand(intent, flags, startId);}@Overridepublic void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();}@Overridepublic void run() {// TODO Auto-generated method stubint count = 0;//每隔一秒钟,向活动发送数据while(true){count++;Intent intent = new Intent();intent.setAction("com.farsight.activityandservice.activity");intent.putExtra("count", count);sendBroadcast(intent);try {Thread.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}
2.Android多媒体编程
[1]多媒体文件:图片文件 png jpg gif
音频 mp3 ogg mid
视频 mp4 3gp
[2]音乐播放器 MediaPlayer --- 播放音乐
SoundPlayer --- 播放音效
[3]MediaPlayer 从sdcard载入音乐文件
MediaPlayer.create(this, R.raw.music_01) 从res/raw下载入音乐文件
start() 播放音乐
pause() 暂停音乐
package com.farsight.mediaplayer;import android.app.Activity;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.SeekBar;import android.widget.SeekBar.OnSeekBarChangeListener;import android.widget.TextView;public class Android_37_MediaPlayerActivity extends Activity implements OnClickListener, OnSeekBarChangeListener { TextView tvSize;TextView tvCurrent;SeekBar seekBar;/** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); findViewById(R.id.button1).setOnClickListener(this); findViewById(R.id.button2).setOnClickListener(this); findViewById(R.id.button3).setOnClickListener(this); tvSize = (TextView) findViewById(R.id.textView1); tvCurrent = (TextView) findViewById(R.id.textView2); seekBar = (SeekBar) findViewById(R.id.seekBar1); seekBar.setOnSeekBarChangeListener(this); this.registerReceiver(receiver, new IntentFilter("receive music data")); } MyReceiver receiver = new MyReceiver(); class MyReceiver extends BroadcastReceiver{@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stubint size = intent.getIntExtra("size", -1);if(size != -1){tvSize.setText(timeFormat(size));seekBar.setMax(size);}int current = intent.getIntExtra("current", -1);tvCurrent.setText(timeFormat(current));seekBar.setProgress(current);} } Intent intent = new Intent();@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif(v.getId() == R.id.button1){intent.setClass(this, PlayMusicService.class);intent.putExtra("control", "play");startService(intent);}else if(v.getId() == R.id.button2){intent.setClass(this, PlayMusicService.class);intent.putExtra("control", "pause");startService(intent);}else if(v.getId() == R.id.button3){//退出音乐播放器//暂停音乐并回收音乐资源//关闭子线程intent.setClass(this, PlayMusicService.class);intent.putExtra("control", "destroy");startService(intent);//销毁activityfinish();}}@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();this.unregisterReceiver(receiver);}//将毫秒转换为分钟显示private String timeFormat(int millionSecond){String format = "";int minutes = millionSecond/1000/60;if(minutes < 10){format += "0"+minutes;}else{format += minutes;}format += ":";int second = millionSecond/1000%60;if(second < 10){format += "0"+second;}else{format += second;}return format;}@Overridepublic void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) {// TODO Auto-generated method stub}@Overridepublic void onStartTrackingTouch(SeekBar seekBar) {// TODO Auto-generated method stubintent.setClass(this, PlayMusicService.class);intent.putExtra("control", "pause");startService(intent);}@Overridepublic void onStopTrackingTouch(SeekBar seekBar) {// TODO Auto-generated method stubintent.setClass(this, PlayMusicService.class);intent.putExtra("control", "seekTo");//intent.putExtra("target", seekBar.getProgress());startService(intent);}}
package com.farsight.mediaplayer;import java.io.IOException;import android.app.Service;import android.content.Intent;import android.media.MediaPlayer;import android.media.MediaPlayer.OnCompletionListener;import android.os.IBinder;public class PlayMusicService extends Service implements Runnable,OnCompletionListener {// 音乐播放器对象// 控制音乐播放MediaPlayer mediaPlayer;boolean isRun;@Overridepublic void onCreate() {// TODO Auto-generated method stubsuper.onCreate();// 当前音乐播放时间// mediaPlayer.getCurrentPosition();// 改变音乐当前的播放位置,传入的参数为时间值// mediaPlayer.seekTo(mediaPlayer.getDuration()/2);nextMusic();isRun = true;new Thread(this).start();}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {// TODO Auto-generated method stubString control = intent.getStringExtra("control");if (control.equals("play"))mediaPlayer.start();else if (control.equals("pause"))mediaPlayer.pause();else if (control.equals("seekTo")) {mediaPlayer.seekTo(intent.getIntExtra("target", 0));mediaPlayer.start();} else if (control.equals("destroy")) {mediaPlayer.stop();mediaPlayer.release(); // 回收音乐资源isRun = false; // 关闭线程}return super.onStartCommand(intent, flags, startId);}@Overridepublic void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();}@Overridepublic IBinder onBind(Intent intent) {// TODO Auto-generated method stubreturn null;}@Overridepublic void run() {// TODO Auto-generated method stubwhile (isRun) {// 检测当前音乐是否正在播放if (mediaPlayer.isPlaying()) {int currentTime = mediaPlayer.getCurrentPosition();Intent intent = new Intent();intent.setAction("receive music data");intent.putExtra("current", currentTime);sendBroadcast(intent);}try {Thread.sleep(500);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}// 当音乐播放完毕时,调用该方法@Overridepublic void onCompletion(MediaPlayer mp) {// TODO Auto-generated method stubnextMusic();mediaPlayer.start();}String paths[] = {"/sdcard/abc.mp3", "/sdcard/music_01.MID"};int index = 0;private void nextMusic() {// 从内部资源文件夹载入音乐资源// mediaPlayer = MediaPlayer.create(this, R.raw.music_01);// 从sdcard载入音乐资源mediaPlayer = new MediaPlayer();try {mediaPlayer.setDataSource(paths[index++%paths.length]);mediaPlayer.prepare();} catch (IllegalArgumentException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SecurityException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalStateException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}// //设置循环播放// mediaPlayer.setLooping(true);// 得到音乐的总时长,以毫秒为单位int size = mediaPlayer.getDuration();Intent intent = new Intent();intent.putExtra("size", size);intent.setAction("receive music data");sendBroadcast(intent);// 监听当前音乐是否播放完毕mediaPlayer.setOnCompletionListener(this);}}
0 0
- Android四大组件之四:BroadcastReceiver 广播接收器
- android四大组件之广播接收器BroadcastReceiver
- android四大组件之--->BroadcastReceiver广播接收器
- Android学习之四大组件之广播接收器BroadcastReceiver
- Android开发--四大组件之BroadcastReceiver广播接收器
- 四大组件之广播接收器BroadcastReceiver
- Android——四大组件之一:BroadcastReceiver 广播接收器
- Android四大组件之广播接收器(一)
- Android 广播接收器BroadcastReceiver(四)
- android四大组件之BroadcastReceiver广播篇
- Android 四大组件之BroadcastReceiver 广播
- Android 四大组件之 BroadcastReceiver 广播接收者
- Android四大组件之broadcastreceiver(广播)
- Android组件系列----BroadcastReceiver广播接收器
- Android组件系列----BroadcastReceiver广播接收器
- Android四大组件之广播接收器 Broadcast Receiver
- Android四大组件之广播接收器(二)
- Android笔记---四大组件之Broadcast Receive广播接收器详解
- 神经网络编程入门
- Majority Element:主元素
- JAVA反射机制实际代码解释
- 连接查询及分组查询强化练习
- 电感绕制方法小结
- Android四大组件之四:BroadcastReceiver 广播接收器
- MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(562,5): error MSB6006: “mt.exe”已退出,代码为 5
- Leetcode Exercise
- JAVA强制类型转换
- 诚信胜过生命
- 周赛一 HDU 2147 博弈论
- Jvm工作原理学习笔记
- BP神经网络模型与学习算法
- LIS 最长递增子序列 Java实现