この問題が発生するのは、Sony Xperia Z (4.4.2) のみです。
私は1つのAndroidオーディオプレーヤーアプリを使用しています。アプリは、ローカル サーバーとしてオーディオ フォーム SD カードを読み取ります。
このオーディオは暗号化されていてサイズが大きいため、ローカルサーバーを作成します。一度に完全なオーディオファイルを実行して復号化しようとすると、メディアプレーヤーの実行に時間がかかるため、このローカルサーバーでこのオーディオファイルを読み取るようにします。
私のローカルサーバーの ServerSocket 接続コード。
int SERVER_PORT=35415;
socket = new ServerSocket(SERVER_PORT, 0, InetAddress.getByAddress(new byte[]{127,0,0,1}));
socket.setSoTimeout(5000);
port = socket.getLocalPort();
Socket client = socket.accept(); /// this line give exception Only Sony Xperia Z (4.4.2).
問題は、オーディオ スチーム ( socket.accept() )を読み取るためにソケットが開いていることを確認しようとすると、SocketTimeoutException
他の Android フォンではなく、Sony Xperia Z (4.4.2) のみで毎回表示されることです。
私が問題を解決しようとしているもの:::
- socket.setSoTimeout(5000) を 20000 まで増やします。
- socket.setSoTimeout(5000); を削除します。問題を解決するためのコード。
- ServerSocket ポートを「123420」から「123440」に変更します。
例外ログ。
08-18 20:18:54.344: E/AudioFileStreamProxy(8594): SocketTimeoutException
08-18 20:18:54.344: E/AudioFileStreamProxy(8594): java.net.SocketTimeoutException
08-18 20:18:54.344: E/AudioFileStreamProxy(8594): at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:108)
08-18 20:18:54.344: E/AudioFileStreamProxy(8594): at java.net.ServerSocket.implAccept(ServerSocket.java:203)
08-18 20:18:54.344: E/AudioFileStreamProxy(8594): at java.net.ServerSocket.accept(ServerSocket.java:128)
08-18 20:18:54.344: E/AudioFileStreamProxy(8594): at com.magnifo.utility.audio.AudioFileStreamProxy.run(AudioFileStreamProxy.java:98)
08-18 20:18:54.344: E/AudioFileStreamProxy(8594): at java.lang.Thread.run(Thread.java:841)
08-18 20:18:54.344: E/AudioFileStreamProxy(8594): Caused by: libcore.io.ErrnoException: accept failed: EAGAIN (Try again)
08-18 20:18:54.344: E/AudioFileStreamProxy(8594): at libcore.io.Posix.accept(Native Method)
08-18 20:18:54.344: E/AudioFileStreamProxy(8594): at libcore.io.BlockGuardOs.accept(BlockGuardOs.java:55)
08-18 20:18:54.344: E/AudioFileStreamProxy(8594): at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:98)