1

そのため、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 メソッドを突然機能させるのはなぜですか?

4

1 に答える 1