實驗7 BindService模擬通訊

實驗7 BindService模擬通訊java

【目的】android

實現啓動端和BindService之間的雙向通訊ide

【要求】佈局

1) 實現從啓動端傳遞一個數據至BindService學習

2) 實現使用BindService服務播放項目源文件中的音樂this

3) 實如今啓動端經過「增長」和「下降」兩個按鈕控制音頻音量大小。spa

4) 實如今啓動端經過「暫停」按鈕控制音頻暫停播放。操作系統

【實驗環境】設計

1)PC機code

2)操做系統:Windows XP

3)軟件: Eclipse, JDK1.6,Android SDK,ADT

【實驗內容及步驟】

1)設計好音樂設置的xml佈局文件,在原有的Sudoku項目中的layout中添加一個musicsetting.xml文件

2)使程序登陸後播放音樂

3)在音樂設計裏面控制音樂的音量大小

【實驗代碼】

MainActivity.java部分代碼:

private int MmusicVolume;
     private MusicService.MyBinder binder;
     ActionBar actionBar;
     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=(MusicService.MyBinder)arg1;
         }
     };
 Intent intentser=new Intent(MainActivity.this, MusicService.class);
 bindService(intentser, connection, Service.BIND_AUTO_CREATE);//播放音樂
        case R.id.ai2:  //帶值跳轉
             item.setChecked(true);
             MmusicVolume=binder.getVolume();
             Intent intent=new Intent();
             intent.setClass(MainActivity.this, music_main.class);
             Bundle bundle=new Bundle();
             bundle.putInt("musicB", MmusicVolume);
             intent.putExtras(bundle);
             startActivity(intent);
             break;

musicsetting.xml代碼:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="音量" />
    <SeekBar
        android:id="@id/seekBar1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
       />
    <CheckBox
        android:id="@+id/checkBox1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="靜音" />
</LinearLayout>

MusicSetting.java代碼:

MediaPlayer mp=new MediaPlayer();
    private MyBinder binder=new MyBinder();
    public class MyBinder extends Binder{
        public int getVolume()
        {
            return aM.getStreamVolume(aM.STREAM_MUSIC);
        }
    }

    public IBinder onBind(Intent arg0) {
       // TODO Auto-generated method stub
        return binder;
    }
    @Override
    public void onCreate() {
        super.onCreate();//初始化MediaPlayer對象,準備播放音樂,音樂文件放在文件夾/res/raw中
        aM=(AudioManager) getSystemService(Context.AUDIO_SERVICE);
        String sdCard=Environment.getExternalStorageDirectory().getPath();
        try {
            mp.setDataSource(sdCard+File.separator+"bjmusic.mp3");
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SecurityException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }catch (IllegalStateException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        try {
            mp.prepare();
        } catch (IllegalStateException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        mp.start();
        }
    @Override
    public void onDestroy() {
    super.onDestroy();
    //中止播放音樂
    mp.stop();
        }

【運行結果截圖】

【總結】

      此次實驗要求實現啓動端和BindService之間的雙向通訊,可是感受此次實驗比較難,不懂怎麼實現,經過網上搜索,詢問同窗勉強完成了一部分實驗,往後還須要更加認真努力的學習。

相關文章
相關標籤/搜索