最近インストールしたホーム セキュリティ デバイスに接続する、初めての Android アプリを作成しています。デバイスに接続してデータを送受信することはできますが、最初に接続するとき、アプリはソケットの getInputStream メソッドを呼び出すときに約 3 ~ 4 秒かかります。これは、SSL ハンドシェイクを行っていることが一因だと思います。これをスピードアップするために何かできることがあるかどうか疑問に思っていますか?以下は私のコードです:
KeyStore trustStore = KeyStore.getInstance("BKS");
InputStream trustStoreStream = _service.getResources().openRawResource(R.raw.mykeystore);
trustStore.load(trustStoreStream, "keystorepass".toCharArray());
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
trustManagerFactory.init(trustStore);
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, trustManagerFactory.getTrustManagers(), null);
SSLSocketFactory factory = sslContext.getSocketFactory();
_socket = (SSLSocket) factory.createSocket(SERVER_IP, SERVER_PORT);
_socket.setUseClientMode(true);
if (_socket.isConnected()) {
_nis = new BufferedReader(new InputStreamReader(_socket.getInputStream()));
_nos = new OutputStreamWriter(_socket.getOutputStream());
String text;
while((text = _nis.readLine()) != null){ //This is blocking
messageReceived(text);
}
}