如何在android包導入問題中捕獲圖像?

用戶944513

我正在嘗試製作HTML頁面上有一個“按鈕”的 hydrid 應用程序。每當我點擊那個按鈕時,我想調用 android 代碼函數(當我test從 javascript調用函數時它工作正常。現在我想捕獲圖像單擊按鈕時,我從以下網址獲取幫助。從相機捕獲圖像並在活動中顯示我喜歡這個包 com.example.myapp.myapplication;

import android.Manifest;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.util.Base64;
import android.util.Log;
import android.webkit.JavascriptInterface;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.widget.Toast;

import java.io.ByteArrayOutputStream;

public class MainActivity extends AppCompatActivity {
    private static final int CAMERA_REQUEST = 1888;
    private static final int MY_CAMERA_PERMISSION_CODE = 100;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        WebView webView = (WebView) findViewById(R.id.webview);
        // webView.loadUrl("http://10.5.200.97:32671");
        webView.loadUrl("http://125.16.74.160:30019");
        JavaScriptInterface jsInterface = new JavaScriptInterface(this);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.setWebChromeClient(new WebChromeClient());
        webView.addJavascriptInterface(jsInterface, "JSInterface");
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if (requestCode == MY_CAMERA_PERMISSION_CODE) {
            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                Toast.makeText(this, "camera permission granted", Toast.LENGTH_LONG).show();
                Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
                startActivityForResult(cameraIntent, CAMERA_REQUEST);
            } else {
                Toast.makeText(this, "camera permission denied", Toast.LENGTH_LONG).show();
            }
        }

    }

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == CAMERA_REQUEST && resultCode == Activity.RESULT_OK) {
            Bitmap photo = (Bitmap) data.getExtras().get("data");
          //  Log.d("My map",photo,"");
        }
    }

    public void checkTest(){
        if (checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
            requestPermissions(new String[]{Manifest.permission.CAMERA}, MY_CAMERA_PERMISSION_CODE);
        } else {
            Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(cameraIntent, CAMERA_REQUEST);
        }
    }
}


class JavaScriptInterface {
    private MainActivity activity;


    public JavaScriptInterface(MainActivity activity) {
        this.activity = activity;
    }

    @JavascriptInterface
    public void test() {
        this.activity.checkTest();
    }


    @JavascriptInterface
    public String bitMapToBase64()
    {
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        //add support for jpg and more.
        bitMap.compress(Bitmap.CompressFormat.PNG, 50, byteArrayOutputStream);
        byte[] byteArray = byteArrayOutputStream .toByteArray();

        String encoded = Base64.encodeToString(byteArray, Base64.DEFAULT);

        return encoded;
    }


}

我收到導入錯誤 在此處輸入圖片說明

我正在嘗試調用一個 android 函數,該函數打開相機並捕獲圖像並返回到 javascript。

您可以像這樣將您的活動中的圖片發送到 javascript

首先,您創建一個將圖像轉換為 base64 字符串的方法

@JavascriptInterface
public String bitMapToBase64()
{
  ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
  //add support for jpg and more.
  bitMap.compress(Bitmap.CompressFormat.PNG, 50, byteArrayOutputStream);
  byte[] byteArray = byteArrayOutputStream .toByteArray();

  String encoded = Base64.encodeToString(byteArray, Base64.DEFAULT);

  return encoded;
}

在 javascript 中你會得到這樣的結果

<input type="button" value="Get from android" onClick="getFromAndroid()" />
<script type="text/javascript">
 var myVar = null;
 function getFromAndroid() {
    myVar = JSInterface.bitMapToBase64();
    alert(myVar);
 }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何捕獲嵌套對像中的元素?

如何在 Django 問卷中顯示圖像

Android CameraX 圖像捕獲 onImageSaved 從不運行

捕獲 png/jpg 圖像中 html div 的內容

如何在 vue 中捕獲非輸入元素上的 Enter 事件?

如何在引導程序輪播中對齊左側的圖像

我的圖像如何在 Swift 中獲取所有按鈕的大小

如何在 NGINX 中獲取直接請求 jpg 圖像的日誌?

如何在顫振中返回捕獲異常

在標題視圖類 CodeIgniter 中導入模型

如何在被包裝的 Dart Text() 中插入圖像?

如何在 tkinter 中刷新圖像

格式化從文件中捕獲的隨機行時出現問題

如何從 Directus 獲取圖像?

如何將文本和圖像同時導入 pubspec yaml

如何處理 RUST 中未解決的導入“具體”問題

Cocoa:在 Swift 中保存時捕獲屏幕並縮放圖像

如果錨標籤中有圖像,JS 將不會捕獲鏈接

如何獲取為瀏覽器上的文件輸入選擇的圖像尺寸

如何訪問公共文件夾 Laravel 中的圖像?

無法在 NetworkX 中導入旅行商問題

如何在 Django 中導入引導程序?

如何在 Go 中解碼圖像並保留原始圖像?

如何在 Recyclerview 中顯示圖像 - Recyclerview 圖像顯示錯誤

React 導入圖像不適用於 CSS

如何在輪廓圖像上獲得“鋸齒狀”邊緣?

如何從wordpress的媒體庫中獲取圖像元數據,例如替代文本、標題和描述

使用 c# 和 .net5 從網絡攝像頭捕獲圖像

如何在 react naitve 中從一個 index.js 文件中使用 require() 導出圖像路徑?