Я разрабатываю собственный плагин для cordova / ioni c, который будет получать кадры камеры и передавать их js как Base64, чтобы его можно было отображать на <img>
или <canvas>
и манипулировать им. при необходимости наберите css. Я протестировал весь код java в студии android, и он работает правильно. Также я использую Log.d("DATA", imageBase64Data)
, чтобы проверить, правильно ли конвертируется изображение, и это так. Моя проблема возникает, когда я хочу отправить данные с родного на js. потому что мне нужно отправить данные внутри слушателя. Это часть моего кода:
private final ImageReader.OnImageAvailableListener mOnImageAvailableListener = new ImageReader.OnImageAvailableListener() {
@Override
public void onImageAvailable(ImageReader reader) {
Image image = null;
try {
image = reader.acquireNextImage();
if (image != null) {
byte[] jpegData = ImageUtils.imageToByteArray(image); // converting to byte array
PluginResult result = new PluginResult(PluginResult.Status.OK, "Dummydata");
result.setKeepCallback(true);
callbackContext.sendPluginResult(result);// this is sent correctly
String data = Base64.encodeToString(jpegData, Base64.DEFAULT);
//if I put the same code below this line I get nothing.
image.close();
}
} catch (Exception e) {
callbackContext.error("Error: "+e);
Log.w("ERROR", e.getMessage());
}
}
};
Кроме того, я не получаю никаких ошибок в Logcat. С другой стороны, на моей стороне js я использую наблюдаемый. Я использую собственную оболочку ioni c и следую их краткому руководству разработчика. функция обернута следующим образом:
@Cordova({
observable: true,
clearFunction: 'clearCamera'
})
OpenCamera(arg0: any): Observable<any> { return; }
Примечание: я использую этот плагин в проекте ionic / angular.