с помощью этой функции Snapet я могу запустить камеру
@JavascriptInterface
public void prendreUnePhoto() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
pickMedia.launch(intent);
}
// обратный вызов
ActivityResultLauncher pickMedia =
registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result-> {
if (result.getResultCode() == RESULT_OK && result.getData() !=null) {
Log.d("PhotoPicker", "Selected URI: " + result.getData().getExtras());
Bundle bundle = result.getData().getExtras();
Bitmap bitmap = (Bitmap) bundle.get("data");
b= (Bitmap) bundle.get("data");
} else {
Log.d("PhotoPicker", "No media selected");
}
});
Здесь я конвертирую фотографию, сделанную в Base64
@JavascriptInterface
public String getPhoto() {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 10, stream);
byte[] bytesArray = stream.toByteArray();
String str = Base64.encodeToString(bytesArray, Base64.DEFAULT);
return str;
}
затем со стороны веб-приложения (клиент веб-просмотра) я могу запустить камеру (фрагмент JAVASCRIPT)
but.addEventListener("click", () => {
v = Android.prendreUnePhoto();
Android.getPhoto();
});
Мне хотелось бы знать, как отобразить фотографию, сделанную камерой, прямо в div моего клиента (веб-просмотр).
Я обязуюсь создать еще одну кнопку, тогда я смогу вызвать функцию getPhoto() и таким образом отобразить сделанную фотографию
verifier.addEventListener("click", () => {
var b = Android.getPhoto();
var src = "data:image/jpeg;base64," + b;
$("#img").append(`
`);
console.log(src);
//alert(typeof b);
});
Подробнее здесь: https://stackoverflow.com/questions/791 ... -my-webapp
Мобильная версия