So I needed to read a ByteArray from the InputStream in Android. Therefore I used this custom method in java in a kivy App using pyjnius for the same reason as stated in the link.
I placed the ReadInput.java file in this directory:
~/Build_Environ/.buildozer/android/platform/build/dists/JniusPrintBluetoothAppie/src/main/java/org/kivy/android
I initialised the java class with pyjnius:
Reading = autoclass('org.kivy.android.ReadInput')
The java code:
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;
}
}
I read from the buffer in python using the following code:
Reading.inputread(self.recv_stream, 4) #recv_stream is an Android BluetoothAdapter createInsecureRfcommSocketToServiceRecord getInputStream object
But for some reason this above code constantly gave me the following error:
JavaException: Unable to find a None Method
After many, many days of struggle I finally got the method to work by simply declaring the method as:
public static
The new java method looked as follows and I called it in the same way as above:
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;
}
}
What I want to know is why would the word 'static' make the java method suddenly work?
The reason is that in Python code you access the method in a static way:
Reading.inputread(...)
This will work only if you define the method inputread in Java as static.
But it was not necessary. It could better to keep the method as non-static in Java and to use it in Python in a normal non-static way:
Reading = autoclass('org.kivy.android.ReadInput')
reading = Reading()
reading.inputread(...)