Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.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-MediaRecorder.getMaxAmpliance()始终返回0_Android - Fatal编程技术网

Android-MediaRecorder.getMaxAmpliance()始终返回0

Android-MediaRecorder.getMaxAmpliance()始终返回0,android,Android,我正在开发一个同时播放和捕获声音的应用程序。但是,当我试图获取文件MediaRecorder的振幅时,GetMaxAmplication()始终返回0。这是我正在使用的代码。我查看了各种资源,但什么也找不到 package com.cool.vicky.fullscan.activity; import android.content.Intent; import android.media.MediaPlayer; import android.media.MediaRecorder; im

我正在开发一个同时播放和捕获声音的应用程序。但是,当我试图获取文件
MediaRecorder的振幅时,GetMaxAmplication()
始终返回0。这是我正在使用的代码。我查看了各种资源,但什么也找不到

package com.cool.vicky.fullscan.activity;

import android.content.Intent;
import android.media.MediaPlayer;
import android.media.MediaRecorder;
import android.os.Environment;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.cool.vicky.fullscan.R;
import com.joanzapata.iconify.widget.IconButton;

import java.io.File;
import java.io.IOException;

public class MicrophoneTestActivity extends AppCompatActivity {

    private ImageView right;
    private TextView title;
    private IconButton testButton;
    private MediaPlayer mediaPlayer;
    private Handler handler = new Handler();
    private MediaRecorder myAudioRecorder;
    private String outputFile = null;
    private int amplitude;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_microphone_test);
        initMediaRecorder();
        initMediaPlayer();
        initUI();
    }

    private void initMediaRecorder() {
        outputFile = Environment.getExternalStorageDirectory().getAbsolutePath() + "/recording.3gp";
        Log.d("Path", outputFile);

        myAudioRecorder = new MediaRecorder();
        myAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        myAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
        myAudioRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
        myAudioRecorder.setOutputFile(outputFile);
        try {
            myAudioRecorder.prepare();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private void initMediaPlayer() {
        mediaPlayer = MediaPlayer.create(this, R.raw.track);
    }

    private void initUI() {
        right = (ImageView) findViewById(R.id.right);
        title = (TextView) findViewById(R.id.title);
        title.setText("Microphone");
        testButton = (IconButton) findViewById(R.id.microphone_test_button);
        testButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mediaPlayer.start();
                myAudioRecorder.start();
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        amplitude = myAudioRecorder.getMaxAmplitude();
                        myAudioRecorder.stop();
                        mediaPlayer.stop();
                        checkRecorderFile();
                    }
                }, 4000);
            }
        });
    }

    private void checkRecorderFile() {
        File f = new File(Environment.getExternalStorageDirectory().getAbsolutePath(), "recording.3gp");
        Log.d("Amplitude", String.valueOf(myAudioRecorder.getMaxAmplitude()));
        if (amplitude == 0) {
            Toast.makeText(MicrophoneTestActivity.this, "Nothing recorded.", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(MicrophoneTestActivity.this, "Recorded.", Toast.LENGTH_SHORT).show();

        }
    }

    @Override
    protected void onStop() {
        myAudioRecorder.release();
        super.onStop();
    }
}