About VRChecker
※アプリに広告は絶対に掲載しません。
※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();
}
}
※現バージョンで再生チェックのロジックを追加してますが上記ソースは初期のままですがご了承願います。 ※ It is not posted on the absolute advertising the app.
※ It is the checker app for available VOICE_CALL of MediaRecorder class.
Run before you say that it can not call recording app recording system.
XPERIA arc will be OK, but the file can not be created. You can call recording to be closed with the finger and the microphone hole at the bottom of the terminal when the microphone setting of arc.
It does not take well to stick to chopsticks GALAXY-S because the abnormal termination at all.
However, to divert as a voice recorder was not a problem.
Please use it as the operation status of TelRecPro / Free This app.
I created for confirmation application that you created in code textbook in the development of Android apps is whether work is intended purpose.
It is a thing of the order to determine whether the terminal can record the received voice with the SDK street.
Please use the TelRecPro / Free If you want to record actually this app because it is checkers.
I will release the source code for reference.
Permission
android.permission.RECORD_AUDIO
android.permission.WRITE_EXTERNAL_STORAGE
※ I put this permission when you want to create a file on the SD card.
※ The source code to remove the space for the character limit. Be careful if you want to copy and paste.
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 of the dialog management
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 ("You run the code to record the received voice. Check the results of the terminal n whether your support.")
. SetPositiveButton ("Check", newDialogInterface.OnClickListener () {
publicvoidonClick (DialogInterfacefdialog, intid) {
/ / The decision whether or not to error
try {
VRcheck ();
/ / Display this message if you do not error
. Toast.makeText (VoiceCallChecker.this, "OK", Toast.LENGTH_SHORT) show ();
showDialog (OK_MESSAGE_ID);
} Catch (IOExceptione) {
/ / Display this message when an error
. 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")
. ("There is a possibility to be able to capture the received voice because it did not error in the recording of VOICE_CALL to your phone.") SetMessage
. 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")
. ("Can not capture the received voice your terminal so that errors in the recording of VOICE_CALL.") SetMessage
. SetPositiveButton ("OK", newDialogInterface.OnClickListener () {
publicvoidonClick (DialogInterfacefdialog, intid) {
dismissDialog (NG_MESSAGE_ID);
showDialog (MAIN_ID);
}
})
. Create ()
);
break;
}
returnd;
}
publicvoidVRcheck () throwsIOException {
MediaRecordermr = newMediaRecorder ();
mr.reset ();
/ / Xperiaarc is not a NG in this but it is not possible to file
/ / It is possible aisle if you set the sampling rate, such as one that was added to 2.2
/ / Not a state that can be recorded in still decent
/ / Model that moves XperiaX10, IS03, IS04 number of other models have a decent reception recording possible models
mr.setAudioSource (MediaRecorder.AudioSource.VOICE_CALL);
/ / Mr.setAudioSource (MediaRecorder.AudioSource.MIC);
/ / Do not error most likely models of the MIC
mr.setOutputFormat (MediaRecorder.OutputFormat.THREE_GPP);
mr.setAudioEncoder (MediaRecorder.AudioEncoder.AMR_NB);
mr.setOutputFile ("/ sdcard/check.3gp");
try {
/ / GALAXY-S falls here in the above settings
/ / Can not be initialized VOICE_CALL
mr.prepare ();
} Catch (IllegalStateExceptione) {
}
/ / Mr.start ();
/ / Mr.stop ();
mr.release ();
/ / / / Files that have been tested Delete
/ / Filefile = newFile ("/ sdcard/check.3gp");
/ / File.delete ();
}
}
※ I add logic of reproduction check the current version, but the source is still early, but please understand.