Android 聽筒播放模式實現代碼

jopen 9年前發布 | 4K 次閱讀 Java Android

    package com.example.media;

import java.io.IOException;  

import android.app.Activity;  
import android.content.Context;  
import android.media.AudioManager;  
import android.media.MediaPlayer;  
import android.media.MediaPlayer.OnCompletionListener;  
import android.os.Bundle;  
import android.view.View;  
import android.view.View.OnClickListener;  
import android.widget.Button;  

public class AAA extends Activity {  
    private Button play;//播放  
    private Button stop;//停止  

    private AudioManager am;//提供訪問控制音量和鈐聲模式的操作  
    private boolean isReleased = false;  
    private boolean isPlaying = false;  
    private MediaPlayer mMediaPlayer;  

    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
        play = (Button) findViewById(R.id.main_play);  
        stop = (Button) findViewById(R.id.main_stop);  

        play.setOnClickListener(new OnClickListener() {  
            @Override  
            public void onClick(View v) {  
                am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);  
                //聽筒模式下設置為false  
                am.setSpeakerphoneOn(false);  
                //設置成聽筒模式  
                am.setMode(AudioManager.MODE_IN_CALL);  
                //設置為通話狀態  
                setVolumeControlStream(AudioManager.STREAM_VOICE_CALL);  

                try {  
                    if (!isPlaying) {  
                        mMediaPlayer = MediaPlayer.create(AAA.this, R.raw.man);  
                        isPlaying = true;  
                        isReleased = false;  
                        mMediaPlayer.setLooping(true);  
                        try {  
                            mMediaPlayer.prepare();  
                        } catch (IllegalStateException e) {  
                            e.printStackTrace();  
                        } catch (IOException e) {  
                            e.printStackTrace();  
                        }  

                        mMediaPlayer.start();  
                    }  
                } catch (IllegalStateException e) {  
                    e.printStackTrace();  
                }  
                //播放完畢監聽  
                mMediaPlayer.setOnCompletionListener(new OnCompletionListener() {  
                            public void onCompletion(MediaPlayer arg0) {  
                                mMediaPlayer.release();  
                                //設置回正常模式  
                                am.setMode(AudioManager.MODE_NORMAL);  
                            }  
                        });  
            }  
        });  

        stop.setOnClickListener(new OnClickListener() {  
            @Override  
            public void onClick(View v) {  
                if (isPlaying && !isReleased) {  
                    isReleased = true;  
                    mMediaPlayer.stop();  
                    mMediaPlayer.release();  
                    isPlaying = false;  
                    //停止播放設置為正常狀態  
                    am.setMode(AudioManager.MODE_NORMAL);  
                }  
            }  
        });  
    }  
}  </pre> 


 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!