实验七 BindService模拟通信
2016-05-03 10:05 33刘梦云 阅读(186) 评论(0) 收藏 举报实验报告
| 
 课程名称  | 
 基于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")); } } 运行结果:(截图) 初始界面:   减小音量:   增大音量:    | 
|||||
| 
 五、实验总结(对本实验结果进行分析,实验心得体会及改进意见)  | 
|||||
| 
 这个实验不是在数独游戏的基础上完成的,而是重新新建一个工程,再在其中添加代码,实现控制音量变化的目的。实验过程很困难,参考老师代码完成。  | 
|||||
| 
 实验评语  | 
 
  | 
||||
| 
 实验成绩  | 
 
  | 
 指导教师签名: 年 月 日  | 
|||
                    
                


                
            
        
浙公网安备 33010602011771号