实验报告
课程名称 |
基于Android平台移动互联网开发 |
实验日期 |
2016年4月22日 |
||
实验项目名称 |
BindService模拟通信 |
实验地点 |
S30010 |
||
实验类型 |
□验证型 √设计型 □综合型 |
学 时 |
2 |
||
一、实验目的及要求(本实验所涉及并要求掌握的知识点) |
|||||
1. 实现启动端和BindService之间的双向通信; 2. 实现从启动端传递一个数据至BindService端; 3. 实现使用BindService服务播放项目源文件中的音乐; 4. 实现在启动端通过“增加”和“降低”两个按钮控制音频音量大小; 5. 实现在启动端通过“暂停”按钮控制音频暂停播放。 |
|||||
二、实验环境(本实验所使用的硬件设备和相关软件) |
|||||
(1)PC机 (2)操作系统:Windows XP (3)软件: Eclipse, JDK1.6,Android SDK,ADT |
|||||
三、实验内容及步骤 |
|||||
1.新建一个名为MusicVolumeControl的工程; 2.分别新建两个名为BServiceMusic和MusicSetting的java文件,并在其中写相关代码; 3.新建一个名为musicsetting的xml文件,并将之与MusicSetting.java文件相关联,在其中完善代码; 4.在AndroidManifest.xml中添加一对标签。 |
|||||
四、实验结果(本实验源程序清单及运行结果或实验结论、实验设计图) |
|||||
代码: MainActivity.java中: public class MainActivity extends Activity { private MediaPlayer mediaPlayer=new MediaPlayer(); private TextView tView; private BServiceMusic.MyBinder binder; private int musicVolume; private Button startBtn,pauseBtn,exitBtn; private ServiceConnection connection=new ServiceConnection() { @Override public void onServiceDisconnected(ComponentName arg0) { // TODO Auto-generated method stub } @Override public void onServiceConnected(ComponentName arg0, IBinder arg1) { // TODO Auto-generated method stub binder=(BServiceMusic.MyBinder)arg1; } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tView=(TextView)findViewById(R.id.textView1); startBtn=(Button)findViewById(R.id.startBtn); pauseBtn=(Button)findViewById(R.id.pauseBtn); exitBtn=(Button)findViewById(R.id.exitBtn); Intent intent1=new Intent(MainActivity.this,BServiceMusic.class); bindService(intent1, connection, Service.BIND_AUTO_CREATE); final Intent intent=getIntent(); startBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub mediaPlayer=MediaPlayer.create(MainActivity.this, R.raw.nan); mediaPlayer.start(); } }); pauseBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub if(mediaPlayer.isPlaying()){ mediaPlayer.pause(); }else{ mediaPlayer.start(); } } }); exitBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub if(mediaPlayer.isPlaying()){ mediaPlayer.release(); } } }); } @Override protected void onDestroy() { // TODO Auto-generated method stub if(mediaPlayer.isPlaying()){ mediaPlayer.stop(); } mediaPlayer.release(); super.onDestroy(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // TODO Auto-generated method stub switch (item.getItemId()){ case R.id.item1: musicVolume=binder.getVolume(); Intent intent=new Intent(MainActivity.this,MusicSetting.class); Bundle bundle=new Bundle(); bundle.putInt("musicVolume", musicVolume); intent.putExtras(bundle); startActivity(intent); finish(); break; default: break; } return super.onOptionsItemSelected(item); } } BServiceMusic.java中: public class BServiceMusic extends Service{ private MediaPlayer mediaPlayer; private AudioManager audioManager; private MyBinder binder=new MyBinder(); public class MyBinder extends Binder{ public int getVolume(){ return audioManager.getStreamVolume(audioManager.STREAM_MUSIC); } } @Override public IBinder onBind(Intent arg0) { // TODO Auto-generated method stub return null; } @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); audioManager=(AudioManager)getSystemService(Context.AUDIO_SERVICE); mediaPlayer=MediaPlayer.create(this, R.raw.nan); mediaPlayer.start(); } } MusicSetting.java中: public class MusicSetting extends Activity{ private ProgressBar musicBar; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.musicsetting); musicBar=(ProgressBar)findViewById(R.id.progressBar1); Bundle bundle=new Bundle(); bundle=getIntent().getExtras(); musicBar.setProgress(bundle.getInt("musicVolume")); } } 运行结果:(截图) 初始界面:
减小音量:
增大音量:
|
|||||
五、实验总结(对本实验结果进行分析,实验心得体会及改进意见) |
|||||
这个实验不是在数独游戏的基础上完成的,而是重新新建一个工程,再在其中添加代码,实现控制音量变化的目的。实验过程很困难,参考老师代码完成。 |
|||||
实验评语 |
|
||||
实验成绩 |
|
指导教师签名: 年 月 日 |