我只能从此代码记录我的声音,而不能在转弯处录音。
我用MediaRecorder.AudioSource.VOICE_CALL
代替了MediaRecorder.AudioSource.MIC
但是我仍然只能听到我的声音。
这是我的代码
public class RecorderService extends IntentService {
private Context mContext;
private MediaRecorder recorder;
static final String TAGS = "RecorderService";
private String phoneNumber;
public RecorderService() {
super("RecorderService");
}
@Override
protected void onHandleIntent(Intent intent) {
}
@Override
public int onStartCommand(@Nullable Intent intent, int flags, int startId) {
Log.e(TAGS, "Started!");
mContext = getApplicationContext();
phoneNumber = intent.getStringExtra("number");
Log.e(TAGS, "Calling Number : " + phoneNumber);
recorder = new MediaRecorder();
startRecording();
return START_NOT_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
Log.e(TAGS, "Stopped!");
stopRecording();
}
private void startRecording() {
Log.e(TAGS, "Recording Started");
File file = new File(Environment.getExternalStorageDirectory()
+ File.separator
+ "My Records"
+ File.separator);
recorder.reset();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
recorder.setOutputFile(file.getAbsolutePath() + "record.mp3");
try {
recorder.prepare();
} catch (IOException e) {
e.printStackTrace();
}
recorder.start();
}
private void stopRecording() {
Log.e(TAGS, "Recording Stopped");
if (recorder != null) {
recorder.stop();
recorder.reset();
recorder.release();
recorder = null;
}
}
}
任何建议!
答案 0 :(得分:1)
不能。除非您是系统应用程序(您需要安装自己的自定义操作系统或要获得root用户才可以),否则不会这样。 VOICE_CALL需要CAPTURE_AUDIO_OUTPUT权限,这是系统权限-普通应用无法使用它。
Play商店中的其他应用如何实现?他们使用了麦克风,希望通话的声音足够大,可以接听。