1、3) onDestory中是否音乐播放器的内存。应用生命周期的功能,实现面试宝典中的退出系统功能。 Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); allActiveActivities.add(this); protected void onDestroy() / 将当前要退出的Activity从所有活动的Activity集合中删除 try allActiveActivities.remove(this); catch (Exception e) e
2、.printStackTrace(); super.onDestroy();当点击退出时,需要将整个集合中所有的Activity关闭。 exit.setOnClickListener(new OnClickListener() Override public void onClick(View v) / 循环迭代所有活动的Activity Iterator iter = allActiveActivities .iterator(); while (iter.hasNext() iter.next().finish(); );3.2、SeekBar拖动条(掌握)使用SeekBar组件,可以实现
3、一个拖动条,用来完成调整亮度,改变音乐播放位置等功能。 TextView+id/resulttext=当前选择的值为: 50/LinearLayout也可以加入监听功能。public class MainActivity extends Activity private SeekBar seekbar; private TextView result; Globals.init(this); / 设置所使用的布局界面 setContentView(R.layout.activity_main); seekbar = (SeekBar) findViewById(R.id.seekbar); r
4、esult = (TextView) findViewById(R.id.result); seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() Override public void onStopTrackingTouch(SeekBar seekBar) result.setText(停止拖动); public void onStartTrackingTouch(SeekBar seekBar) 开始拖动 public void onProgressChanged(SeekBar seekBar, int pro
5、gress, boolean fromUser) 正在拖动,当前的值为: + progress); );3.3、音乐播放器(掌握)在进行音频和视频播放时,都需要使用MediaPlayer类来加载音频或视频文件。同时要注意,如果想使用模拟器播放音频时,不能使用snapshot。同时还要注意,如果使用win7 + 模拟器播放音频时,必须使用管理员身份启动Eclipse,否则SD卡无法识别。准备工作都完成后,可以开始初始化音频播放的类,MediaPlayer这个类也有自己的生命周期。可以通过其API文档来查看生命周期的执行流程:1) 建立对象后,MediaPlayer对象会默认处于空闲状态(idle
6、)2) 需要为其设置播放的数据来源(音频或视频文件)3) 调用prepare()方法,将里面的一些信息读入并准备好。4) 准备好后,才可以调用start()进行播放5) 如果设置了循环播放(looping=true)且歌曲已经播放完成,则会自动重新播放。6) 在播放状态下,调用pause()方法会进入暂停状态,再次调用start()即可继续播放。7) 如果没有设置循环播放(Looping= false),且音乐播放完成,会自动进入播放完成状态,这时如果再次调用start(),则会重新开始当前歌曲的播放。8) 停止状态不会自动进入,必须调用stop方法才会进入这个状态。9) 如果想完整的释放所有
7、内存,需要调用release()方法来完成。这里先完成一个基本的歌曲播放功能,没有界面。 private MediaPlayer player; private String filePath = /mnt/sdcard/a.mp3; / 初始化 player = new MediaPlayer(); / 设置要播放的文件 player.setDataSource(filePath); / 进行准备操作 player.prepare(); / 开始播放 player.start(); Toast.makeText(this, 当前加载的音乐有问题,请确定文件格式是否正确!, Toast.LEN
8、GTH_LONG) .show(); / 退出时释放音乐 if (player != null) if (player.isPlaying() player.stop(); player.release();设计界面,加入播放,暂停,上一首,下一首,以及所有歌曲列表等界面组件。background=#cccccc+id/music_name0dplayout_weight=1gravity=centerstring/hello_worldtextColor=#000000textSize=16spLinearLayout2horizontaldrawable/audio_identify_st
9、art_defaultListView+id/list3/ListView0.5+id/time_text00:00 / 00:0012spButton+id/pre_btndrawable/ic_player_prev_default+id/play_btn1.5drawable/ic_player_play_default+id/next_btndrawable/ic_player_next_default完成各种音乐播放的操作功能。 private String songName = Fly Me To The Moon / 音乐名称 private TextView musicName
10、; / 播放时间长度的文本 private TextView timeText; / 拖动条 / 播放/暂停 按钮 private Button playBtn; / 上一首 private Button preBtn; / 下一首 private Button nextBtn; / 总播放时长的文本 private String durationTimeStr; / 建立消息通道,以便在子线程中修改界面 private Handler handler; handler = new Handler() public void handleMessage(Message msg) seekbar
11、.setProgress(player.getCurrentPosition(); timeText.setText(getTextByMs(player.getCurrentPosition() + / + durationTimeStr); ; / 取得所有组件 musicName = (TextView) findViewById(R.id.music_name); timeText = (TextView) findViewById(R.id.time_text); playBtn = (Button) findViewById(R.id.play_btn); preBtn = (Bu
12、tton) findViewById(R.id.pre_btn); nextBtn = (Button) findViewById(R.id.next_btn); / player.start(); / 初始化拖动条的总长度 seekbar.setMax(player.getDuration(); durationTimeStr = getTextByMs(player.getDuration(); / 修改歌曲标题 musicName.setText(songName); / 设置显示的播放时间 timeText.setText(00 / + durationTimeStr); / 加入一个
13、多线程,通过子线程控制拖动条以及显示时间的改变 Thread t = new Thread() public void run() while (true) try Thread.sleep(1000); / 取得当前的播放时间位置,设置到拖动条里 if (player.isPlaying() / 传递一个空消息,不需要有具体的消息内容,因为消息通道中只有一个固定的操作,而且不需要参数. handler.sendEmptyMessage(0); catch (Exception e) e.printStackTrace(); t.start(); / 为播放按钮加监听 playBtn.setO
14、nClickListener(new OnClickListener() public void onClick(View v) if (player.isPlaying() player.pause(); playBtn.setBackgroundResource(R.drawable.ic_player_play_default); else player.start(); playBtn.setBackgroundResource(R.drawable.ic_player_pause_default); / 开始播放 playBtn.performClick(); / 加入拖动条的监听 /
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2