※アプリに広告は絶対に掲載しません。
※MediaRecorderクラスのVOICE_CALLが使えるかのチェッカーアプリです。
録音系のアプリで通話録音が出来ないと言う前に実行して下さい。
XPERIA arcはOKになりますが、ファイルが作成出来ません。arcの場合マイク設定で端末下部のマイク穴を指などで塞ぐと通話録音出来ます。
GALAXY-Sは全く異常終了するので箸にも棒にもかかりません。
ただし、ボイスレコーダーとして流用するのは問題ありませんでした。
このアプリはTelRecPro/Freeの動作確認用としてお使い下さい。
本来の目的はAndroidアプリの開発において教科書通りのコードで作成したアプリが動くかどうかの確認の為に作成しました。
SDK通りで受話音声を録音出来る端末かどうか判定する為のものです。
このアプリはチェッカーなので実際に録音したい場合はTelRecPro/Freeをご利用下さい。
参考までにソースコードを公開します。
パーミッション
android.permission.RECORD_AUDIO
android.permission.WRITE_EXTERNAL_STORAGE
※SDカードにファイルを作成するときにこのパーミッションをつけました。
※ソースコードは文字数制限の為スペースを除去しています。コピペする場合はご注意願います。
packagejp.co.zebrasoft.vrchecker;
importjava.io.IOException;
importandroid.app.Activity;
importandroid.app.AlertDialog;
importandroid.app.Dialog;
importandroid.content.DialogInterface;
importandroid.media.MediaRecorder;
importandroid.os.Bundle;
importandroid.widget.Toast;
publicclassVoiceCallCheckerextendsActivity{
/**Calledwhentheactivityisfirstcreated.*/
//ダイアログの管理ID
privatestaticfinalintMAIN_ID =1;
privatestaticfinalintOK_MESSAGE_ID =2;
privatestaticfinalintNG_MESSAGE_ID =3;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
showDialog(MAIN_ID);
}
@Override
protectedDialogonCreateDialog(intid){
Dialogd=super.onCreateDialog(id);
switch(id){
caseMAIN_ID:
d=(
newAlertDialog.Builder(VoiceCallChecker.this)
.setIcon(R.drawable.dialog_i)
.setTitle("VOICE_CALLChecker")
.setMessage("受話音声を録音するコードをはしらせます。\nお使いの端末が対応しているか結果を確認して下さい。")
.setPositiveButton("Check",newDialogInterface.OnClickListener(){
publicvoidonClick(DialogInterfacefdialog,intid){
//エラーするかしないか判定
try{
VRcheck();
//エラーしなければこのメッセージを表示
Toast.makeText(VoiceCallChecker.this,"OK",Toast.LENGTH_SHORT).show();
showDialog(OK_MESSAGE_ID);
}catch(IOExceptione){
//エラーするとこのメッセージを表示
Toast.makeText(VoiceCallChecker.this,"NG",Toast.LENGTH_SHORT).show();
showDialog(NG_MESSAGE_ID);
}
dismissDialog(MAIN_ID);
}
})
.setNegativeButton("Cancel",newDialogInterface.OnClickListener(){
publicvoidonClick(DialogInterfacefdialog,intid){
dismissDialog(MAIN_ID);
finish();
}
})
.create()
);
break;
caseOK_MESSAGE_ID:
d=(
newAlertDialog.Builder(VoiceCallChecker.this)
.setIcon(R.drawable.dialog_i)
.setTitle("VOICE_CALLChecker")
.setMessage("お使いの端末はVOICE_CALLの録音でエラーしなかったので受話音声をキャプチャー出来る可能性があります。")
.setPositiveButton("OK",newDialogInterface.OnClickListener(){
publicvoidonClick(DialogInterfacefdialog,intid){
dismissDialog(OK_MESSAGE_ID);
showDialog(MAIN_ID);
}
})
.create()
);
break;
caseNG_MESSAGE_ID:
d=(
newAlertDialog.Builder(VoiceCallChecker.this)
.setIcon(R.drawable.dialog_i)
.setTitle("VOICE_CALLChecker")
.setMessage("お使いの端末はVOICE_CALLの録音でエラーするので受話音声をキャプチャー出来ません。")
.setPositiveButton("OK",newDialogInterface.OnClickListener(){
publicvoidonClick(DialogInterfacefdialog,intid){
dismissDialog(NG_MESSAGE_ID);
showDialog(MAIN_ID);
}
})
.create()
);
break;
}
returnd;
}
publicvoidVRcheck()throwsIOException{
MediaRecordermr=newMediaRecorder();
mr.reset();
//XperiaarcはこれでNGにはならないがファイルが出来ない
//2.2から追加されたサンプリングレートなどを設定するとアイルは出来るが
//まだまだまともに録音出来る状態ではない
//XperiaX10、IS03、IS04他数機種まともに動く機種が受話録音可能な機種
mr.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);
//mr.setAudioSource(MediaRecorder.AudioSource.MIC);
//MICは大概の機種でエラーしない
mr.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mr.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mr.setOutputFile("/sdcard/check.3gp");
try{
//GALAXY-Sは上記の設定でここで落ちる
//VOICE_CALLの初期化が出来ない
mr.prepare();
}catch(IllegalStateExceptione){
}
// mr.start();
// mr.stop();
mr.release();
// //テストしたファイルは削除
// Filefile=newFile("/sdcard/check.3gp");
// file.delete();
}
}
※現バージョンで再生チェックのロジックを追加してますが上記ソースは初期のままですがご了承願います。
熱門國家 | 系統支援 | 版本 | 費用 | APP評分 | 上架日期 | 更新日期 |
---|---|---|---|---|---|---|
未知 | Android Google Play | 1.0 App下載 | JPY$0.0 | 1970-01-01 | 2015-03-08 |