我的录音机停在我的prepare()行。 Log cat对start()行说“无效状态4”,这意味着我的输出文件似乎有问题。我用
实现了我的输出文件mFileName = Environment.getExternalStorageDirectory() + "/lastConversateRecord.3gp";
My Expression-Watchguard为mFileName显示“/mnt/sdcard/lastConversateRecord.3gp”,这听起来不错。
我的音频录音机在定期活动中工作,但自从我改为片段后就开始了。
我在清单中提供了Record_Audio + WRITE_EXTERNAL_STORAGE权限。
这是我的代码 - 你有提示吗?谢谢!
public class Fragment_2 extends SherlockFragment{
private MediaRecorder mRecorder = null;
private String mFileName;
private String TAG = "App";
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_2, container, false);
Button r1 = (Button) view.findViewById(R.id.record);
r1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//mFileName = getActivity().getExternalCacheDir() + File.separator + System.currentTimeMillis() + ".3gp";
mFileName = Environment.getExternalStorageDirectory() + "/lastConversateRecord.3gp";
Log.d(TAG, "Record started");
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setOutputFile(mFileName);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
try {
mRecorder.prepare();
} catch (IOException e) {
Log.e(TAG, "prepare() failed");
}
mRecorder.start();
}
});
return view;
}
}
答案 0 :(得分:0)
解决方案:我必须在SD卡上提供我的模拟器空间。
答案 1 :(得分:0)
问题在于应用程序不请求权限
在清单中使用
<item android:state_checked="true"
>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<corners
android:radius="8dp"
/>
<solid
android:color="#514b4b"
/>
<size
android:width="85dp"
android:height="85dp"
/>
</shape>
</item>
<item>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<corners
android:radius="8dp"
/>
<solid
android:color="#EAEAEA"
/>
<size
android:width="85dp"
android:height="85dp"
/>
</shape>
</item>
您的活动
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.STORAGE"/>
还有
import static android.Manifest.permission.RECORD_AUDIO;
import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE;
后来
public static final int REQUEST_AUDIO_PERMISSION_CODE=1;
我希望它有用:)