そのため、Android の InputStream から ByteArray を読み取る必要がありました。したがって、リンクに記載されているのと同じ理由で、pyjnius を使用して kivy アプリの Java で このカスタム メソッドを使用しました。
ReadInput.java ファイルをこのディレクトリに配置しました。Java
~/Build_Environ/.buildozer/android/platform/build/dists/JniusPrintBluetoothAppie/src/main/java/org/kivy/android
クラスを pyjnius で初期化しました。
Reading = autoclass('org.kivy.android.ReadInput')
Java コード:
package org.kivy.android;
import java.io.InputStream;
import java.lang.Byte;
import java.lang.Integer;
import java.io.IOException;
public class ReadInput {
public byte[] inputread(InputStream stream, int count) throws IOException {
byte[] by = new byte[count];
stream.read(by);
return by;
}
}
次のコードを使用して、Python でバッファから読み取ります。
Reading.inputread(self.recv_stream, 4) #recv_stream is an Android BluetoothAdapter createInsecureRfcommSocketToServiceRecord getInputStream object
しかし、何らかの理由で、この上記のコードで常に次のエラーが発生しました。
JavaException: Unable to find a None Method
何日もの苦労の末、メソッドを
public static
次のように宣言するだけで、ようやくメソッドが機能するようになりました。新しいJavaメソッドは次のようになり、上記と同じ方法で呼び出しました。
package org.kivy.android;
import java.io.InputStream;
import java.lang.Byte;
import java.lang.Integer;
import java.io.IOException;
public class ReadInput {
public static byte[] inputread(InputStream stream, int count) throws IOException {
byte[] by = new byte[count];
stream.read(by);
return by;
}
}
私が知りたいのは、「静的」という言葉が Java メソッドを突然機能させるのはなぜですか?