Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android中实现恢复/暂停音频录制?_Android_Audio_Mobile_Record - Fatal编程技术网

如何在Android中实现恢复/暂停音频录制?

如何在Android中实现恢复/暂停音频录制?,android,audio,mobile,record,Android,Audio,Mobile,Record,我正在构建一个Android应用程序,它正在使用恢复/暂停功能进行m4a录制。 有可能吗?如果是,请告诉我解决方案 谢谢如果您需要播放音频/视频资源,您可以使用MediaPlayer对象,如果您有特殊需要,您可以包装它。特别是,要显示视频,您需要一个SurfaceView及其支架。无论如何,它的工作原理如下: import android.content.Context; import android.media.MediaPlayer; public class MyPlayer {

我正在构建一个Android应用程序,它正在使用恢复/暂停功能进行m4a录制。 有可能吗?如果是,请告诉我解决方案


谢谢

如果您需要播放音频/视频资源,您可以使用MediaPlayer对象,如果您有特殊需要,您可以包装它。特别是,要显示视频,您需要一个SurfaceView及其支架。无论如何,它的工作原理如下:

import android.content.Context;
import android.media.MediaPlayer;

public class MyPlayer {

    private MediaPlayer mPlayer;
    private SurfaceHolder mSurfaceHolder;

    public void play(Context c) {

        if (mPlayer == null) {

            mPlayer = MediaPlayer.create(c, R.<YOUR RESOURCE NAME>);
            mPlayer.setDisplay(mSurfaceHolder);

            //Sets a listener to the mPlayer variable that set's it to null once the playing is finished
            mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

                @Override
                public void onCompletion(MediaPlayer mp) {
                        stop();
                }
            });

        }
        mPlayer.start();
    }

    public void pause() {
        if (mPlayer.isPlaying()) {
            mPlayer.pause();
        }
    }

    public void stop() {
        if (mPlayer != null) {
            mPlayer.release();
            mPlayer = null;
        }
    }

    public void setSurface(SurfaceHolder sh) {
      mSurfaceHolder = sh;
    }

}
假设您的媒体资源位于原始文件夹中,媒体播放器可以是这样的:

import android.content.Context;
import android.media.MediaPlayer;

public class MyPlayer {

    private MediaPlayer mPlayer;
    private SurfaceHolder mSurfaceHolder;

    public void play(Context c) {

        if (mPlayer == null) {

            mPlayer = MediaPlayer.create(c, R.<YOUR RESOURCE NAME>);
            mPlayer.setDisplay(mSurfaceHolder);

            //Sets a listener to the mPlayer variable that set's it to null once the playing is finished
            mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

                @Override
                public void onCompletion(MediaPlayer mp) {
                        stop();
                }
            });

        }
        mPlayer.start();
    }

    public void pause() {
        if (mPlayer.isPlaying()) {
            mPlayer.pause();
        }
    }

    public void stop() {
        if (mPlayer != null) {
            mPlayer.release();
            mPlayer = null;
        }
    }

    public void setSurface(SurfaceHolder sh) {
      mSurfaceHolder = sh;
    }

}
导入android.content.Context;
导入android.media.MediaPlayer;
公共类MyPlayer{
私有媒体播放器mPlayer;
私人地表持有人;
公共虚空游戏(上下文c){
if(mPlayer==null){
mPlayer=MediaPlayer.create(c,R.);
mPlayer.setDisplay(mSurfaceHolder);
//将侦听器设置为mPlayer变量,该变量在播放完成后将其设置为null
mPlayer.setOnCompletionListener(新的MediaPlayer.OnCompletionListener(){
@凌驾
完成时的公共作废(MediaPlayer mp){
停止();
}
});
}
mPlayer.start();
}
公共空间暂停(){
if(mPlayer.isPlaying()){
mPlayer.pause();
}
}
公共停车场(){
if(mPlayer!=null){
mPlayer.release();
mPlayer=null;
}
}
公共空隙设置表面(表面处理){
mSurfaceHolder=sh;
}
}
玩家将被放入碎片/活动中。假设有一个xml布局,其中SurfaceView作为“屏幕”,三个按钮用于媒体控制,您的片段如下所示:

public class PlayerFragment extends Fragment {

    private Button mPlayButton;
    private Button mPauseButton;
    private Button mStopButton;
    private SurfaceView mSurface;
    private SurfaceHolder mHolder;
    private MyPlayer mPlayer = new MyPlayer();

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {

        //Gets the view and sets the player to be able to play a video resource
        View v = inflater.inflate(R.layout.<YOUR XML LAYOUT>, parent, false);
        mSurface = (SurfaceView) v.findViewById(R.id.surface);
        mHolder = mSurface.getHolder();
        mHolder.setKeepScreenOn(true);
        mPlayer.setSurface(mHolder);

        //Inflates the play button and sets on it a listener (created as an anonymous class)
        mPlayButton = (Button) v.findViewById(R.id.playButton);
        mPlayButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
            mPlayer.play(getActivity());    
            }
        });

        //Inflates the pause button and sets on it a listener (created as an anonymous class)
        mPauseButton = (Button) v.findViewById(R.id.pauseButton);
        mPauseButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                mPlayer.pause();    
            }
        });

        //Inflates the stop button and sets on it a listener (created as an anonymous class)
        mStopButton = (Button) v.findViewById(R.id.stopButton);
        mStopButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
            mPlayer.stop(); 
            }
        });

        return v;
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        mPlayer.stop();
    }




}
公共类PlayerFragment扩展片段{
私人按钮;
私人按钮和公共按钮;
私人按钮mStopButton;
私人表面查看MSsurface;
私人地勤人员;
private MyPlayer mPlayer=new MyPlayer();
@凌驾
创建视图上的公共视图(LayoutFlater充气器、视图组父级、捆绑保存状态){
//获取视图并将播放机设置为能够播放视频资源
视图v=充气机充气(右布局,父视图,假);
mSurface=(SurfaceView)v.findViewById(R.id.surface);
mHolder=mssurface.getHolder();
mHolder.setKeepScreenOn(真);
mPlayer.setSurface(mHolder);
//充气播放按钮并在其上设置侦听器(创建为匿名类)
mPlayButton=(按钮)v.findViewById(R.id.playButton);
mPlayButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
mPlayer.play(getActivity());
}
});
//膨胀“暂停”按钮并在其上设置侦听器(创建为匿名类)
mPauseButton=(按钮)v.findViewById(R.id.pauseButton);
mPauseButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
mPlayer.pause();
}
});
//膨胀停止按钮并在其上设置侦听器(创建为匿名类)
mStopButton=(按钮)v.findViewById(R.id.stopButton);
mStopButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
mPlayer.stop();
}
});
返回v;
}
@凌驾
公共空间{
super.ondestory();
mPlayer.stop();
}
}
请务必小心,一旦使用完媒体资源,或者在获得锁后活动/片段被销毁时,请释放媒体资源。如果不这样做,可能会影响其他应用程序或操作系统的行为


显然,如果您需要更复杂的功能,您必须添加它们。这只是一个非常简单的玩家的例子。还请记住,某些文件和/或设备可能会导致不兼容。

“我正在构建Android应用程序”。。。太好了,分享你目前所拥有的。谢谢你的帮助,此刻,我需要录音功能。(暂停/继续,播放)