質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

WebRTC

WebRTC(Web Real-Time Communication)とは、プラグイン無しでウェブブラウザ間の音声通話・ビデオチャットなどリアルタイムコミュニケーションができるオープンフレームワークです。W3CがAPIレベルで、IETFがプロトコルレベルでそれぞれ標準化が進められています。

Q&A

0回答

1200閲覧

AndroidStudioで作成したアプリに表示される「エラーコード:3」の解決

bjarmstrong

総合スコア2

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

WebRTC

WebRTC(Web Real-Time Communication)とは、プラグイン無しでウェブブラウザ間の音声通話・ビデオチャットなどリアルタイムコミュニケーションができるオープンフレームワークです。W3CがAPIレベルで、IETFがプロトコルレベルでそれぞれ標準化が進められています。

0グッド

0クリップ

投稿2021/01/21 17:37

編集2021/01/24 19:06

現在、大学の授業でアプリを開発しております。
そのアプリは音声認識とビデオ通話を組み合わせたリアルタイムで音声を文字に変換するアプリです。
二つの機能を実装することは出来たのですが、ビデオ通話を接続すると音声認識が出来なくなり、エラーコード:3と表示されてしまいます。
調べてみたところ、グーグルアプリのダウンロードの際にこのメッセージが表示されているようなのですが、私の開発しているアプリとの関連性が分かりません。
通話の接続をしなければ問題なく音声認識は動いているのでコードのミスではないと思うのですが、
何か解決方法、原因を教えていただけないかと思います。

MainActivity

1public class MainActivity extends AppCompatActivity 2 implements View.OnClickListener, RecognitionListener{ 3 private static final String TAG = MainActivity.class.getSimpleName(); 4 5 //省略 6 private boolean _bConnected; 7 8 private Handler _handler; 9 10 @Override 11 protected void onCreate(Bundle savedInstanceState) { 12 Window wnd = getWindow(); 13 wnd.addFlags(Window.FEATURE_NO_TITLE); 14 super.onCreate(savedInstanceState); 15 setContentView(R.layout.activity_main); 16 17 }); 18 19 _handler = new Handler(Looper.getMainLooper()); 20 final Activity activity = this; 21 22 _handler = new Handler(Looper.getMainLooper()); 23 24 25 PeerOption option = new PeerOption(); 26 option.key = API_KEY; 27 option.domain = DOMAIN; 28 option.debug = Peer.DebugLevelEnum.ALL_LOGS; 29 _peer = new Peer(this, option); 30 31 32 _peer.on(Peer.PeerEventEnum.OPEN, new OnCallback() { 33 @Override 34 public void onCallback(Object object) { 35 _strOwnId = (String) object; 36 TextView tvOwnId = (TextView) findViewById(R.id.tvOwnId); 37 tvOwnId.setText(_strOwnId); 38 39 if (ContextCompat.checkSelfPermission(activity, 40 Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED && ContextCompat.checkSelfPermission(activity, 41 Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) { 42 ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO}, 0); 43 } else { 44 45 startLocalStream(); 46 } 47 48 } 49 }); 50 _peer.on(Peer.PeerEventEnum.CALL, new OnCallback() { 51 @Override 52 public void onCallback(Object object) { 53 //省略 54 55 closeRemoteStream(); 56 _mediaConnection.close(true); 57 58 } 59 60 v.setEnabled(true); 61 } 62 }); 63 64 65 Button switchCameraAction = (Button) findViewById(R.id.switchCameraAction); 66 switchCameraAction.setOnClickListener(new View.OnClickListener() { 67 @Override 68 public void onClick(View v) { 69 if (null != _localStream) { 70 Boolean result = _localStream.switchCamera(); 71 if (true == result) { 72 73 } else { 74 75 } 76 } 77 78 } 79 }); 80 81 mButton = (Button) findViewById(R.id.speech_button); 82 mText = (TextView) findViewById(R.id.output_text); 83 84 mButton.setOnClickListener(this); 85 86 mRecorder = null; 87 88 mAlert = new AlertDialog.Builder(this); 89 mAlert.setTitle("エラー"); 90 mAlert.setPositiveButton("OK", null); 91 92 checkRecordable(); 93 94 } 95 96 public Boolean checkRecordable() { 97 if (!SpeechRecognizer.isRecognitionAvailable(getApplicationContext())) { 98 99 mText.setText("音声認識が使用できません"); 100 return false; 101 } 102 if (Build.VERSION.SDK_INT >= 23) { 103 if (ActivityCompat.checkSelfPermission(this, 104 Manifest.permission.RECORD_AUDIO) 105 != PackageManager.PERMISSION_GRANTED) { 106 mText.setText("マイクの使用を許可してください"); 107 ActivityCompat.requestPermissions(this, 108 new String[]{ 109 Manifest.permission.RECORD_AUDIO}, 110 PERMISSION_RECORD_AUDIO); 111 return false; 112 } 113 } 114 return true; 115 } 116 117 @Override 118 public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { 119 switch (requestCode) { 120 //省略 121 break; 122 } 123 } 124 125 @Override 126 protected void onStart() { 127 super.onStart(); 128 129 View decorView = getWindow().getDecorView(); 130 decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN); 131 132 Window wnd = getWindow(); 133 wnd.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); 134 wnd.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 135 } 136 137 @Override 138 protected void onResume() { 139 super.onResume(); 140 /////省略 141 super.onDestroy(); 142 } 143 144 void startLocalStream() { 145 Navigator.initialize(_peer); 146 MediaConstraints constraints = new MediaConstraints(); 147 _localStream = Navigator.getUserMedia(constraints); 148 Canvas canvas = (Canvas) findViewById(R.id.svLocalView); 149 _localStream.addVideoRenderer(canvas, 0); 150 } 151 152 void setMediaCallbacks() { 153 154 _mediaConnection.on(MediaConnection.MediaEventEnum.STREAM, new OnCallback() { 155 @Override 156 public void onCallback(Object object) { 157 _remoteStream = (MediaStream) object; 158 Canvas canvas = (Canvas) findViewById(R.id.svRemoteView); 159 _remoteStream.addVideoRenderer(canvas, 0); 160 } 161 }); 162 163 //省略 164 165 updateActionButtonTitle(); 166 } 167 168 void showPeerIDs() { 169 if ((null == _peer) || (null == _strOwnId) || (0 == _strOwnId.length())) { 170 //省略 171 } else { 172 Toast.makeText(fContext, "PeerID list (other than your ID) is empty.", Toast.LENGTH_SHORT).show(); 173 } 174 } 175 }); 176 177 } 178 void updateActionButtonTitle() { 179 _handler.post(new Runnable() { 180 @Override 181 public void run() { 182 Button btnAction = (Button) findViewById(R.id.btnAction); 183 if (null != btnAction) { 184 if (false == _bConnected) { 185 btnAction.setText("Make Call"); 186 } else { 187 btnAction.setText("Hang up"); 188 } 189 } 190 } 191 }); 192 } 193 public void stopRecording() { 194 //省略 195 196 mButton.setText(getString(R.string.stop_speech)); 197 } 198 } 199 200 @Override 201 public void onClick(View v) { 202 if(v.getId() != R.id.speech_button){ 203 return; 204 } 205 if(mRecorder != null){ 206 stopRecording(); 207 } 208 else{ 209 startRecording(); 210 } 211 } 212 213 @Override 214 public void onReadyForSpeech(Bundle params) { 215 Log.d("MainActivity","onReadyForSpeech"); 216 mText.setText(getString(R.string.ready_speech)); 217 } 218 219 @Override 220 public void onBeginningOfSpeech() { 221 Log.d("MainActivity","onBeginningOfSpeech"); 222 mText.setText(""); 223 } 224 225 @Override 226 public void onBufferReceived(byte[] buffer) { 227 Log.d("MainActivity","onBufferReceived"); 228 } 229 230 @Override 231 public void onRmsChanged(float rmsdB) { 232 Log.d("MainActivity","onRmsChanged"); 233 } 234 235 @Override 236 public void onEndOfSpeech() { 237 Log.d("MainActivity","onEndOfSpeech"); 238 stopRecording(); 239 } 240 241 @Override 242 public void onError(int error) { 243 Log.d("MainActivity","onError.error="+error); 244 mText.setText(getString(R.string.speech_error) + "\nエラーコード:" + error); 245 stopRecording(); 246 } 247 248 @Override 249 public void onEvent(int eventType, Bundle params) { 250 Log.d("MainActivity","onEvent.eventType="+eventType); 251 } 252 253 @Override 254 public void onPartialResults(Bundle partialResults) { 255 Log.d("MainActivity","onPartialResults"); 256 String str = partialResults.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION).get(0); 257 if(str.length() > 0) { 258 mText.setText(str); 259 } 260 } 261 262 @Override 263 public void onResults(Bundle results) { 264 Log.d("MainActivity","onResults"); 265 } 266 267}

下の二つのURLを組み合わせています。
省略部分はURLのものと同じです。

https://www.servernote.net/article.cgi?id=android-voice-to-text
https://webrtc.ecl.ntt.com/documents/android-sdk.html#%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問