如何从浏览器触发的活动(相机/图像选择器活动)向浏览器返回数据(图像)

时间:2019-05-23 09:20:33

标签: java android

我创建了一个简单的相机应用程序,并从browser()启动它,以便从多个相机选项中拍照(如果我选择默认相机或第三方相机(打开相机,youcam ..),则将数据返回浏览器,如果我选择相机不返回数据。

图像选择器发生了同样的事情。

public class MainActivity extends Activity implements SurfaceHolder.Callback {

    private Button btnCapture;
    private SurfaceView surfaceView;
    private Camera camera;
    private SurfaceHolder surfaceHolder;
    private Camera.PictureCallback pictureCallback;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        surfaceView = findViewById(R.id.surfaceView);
        btnCapture = findViewById(R.id.btnCapture);

        surfaceHolder = surfaceView.getHolder();
        surfaceHolder.addCallback(this);
        surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

        btnCapture.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                camera.takePicture(null, null, pictureCallback);
            }
        });

        pictureCallback = new Camera.PictureCallback() {
            @Override
            public void onPictureTaken(byte[] data, Camera camera) {
                Bitmap bmp = BitmapFactory.decodeByteArray(data, 0, data.length);
                Bitmap cbmp = Bitmap.createBitmap(bmp,0, 0, bmp.getWidth(), bmp.getHeight(), null, true);

                String fileName = currentDateFormat();
                storePhotoToStorage(cbmp, fileName);

                Toast.makeText(getApplicationContext(), "success..!", Toast.LENGTH_LONG).show();

//                MainActivity.this.camera.startPreview();
            }
        };
    }


    private String currentDateFormat() {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd_HH_mm_ss");
        String currentTime = dateFormat.format(new Date());
        return currentTime;
    }

    private void storePhotoToStorage(Bitmap cbmp, String fileName){
        File outputFile = new File(Environment.getExternalStorageDirectory(), "/DCIM/"+"photo_"+fileName+".jpg");

        try {
            FileOutputStream fileOutputStream = new FileOutputStream(outputFile);
            cbmp.compress(Bitmap.CompressFormat.JPEG, 100, fileOutputStream);
            fileOutputStream.flush();
            fileOutputStream.close();

        } catch (FileNotFoundException e){
            e.printStackTrace();
        } catch (IOException e){
            e.printStackTrace();
        }
    }

    @Override
    public void surfaceCreated(SurfaceHolder holder) {
        try {
            camera = Camera.open();
        } catch (Exception e) {
            e.printStackTrace();
        }

        Camera.Parameters parameters;
        parameters = camera.getParameters();
        parameters.setPreviewFrameRate(20);
        parameters.setPictureSize(352, 288);
        camera.setParameters(parameters);
        camera.setDisplayOrientation(90);
        try {
            camera.setPreviewDisplay(surfaceHolder);
            camera.startPreview();
        } catch (IOException e){
            e.printStackTrace();
        }
    }

    @Override
    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {

    }

    @Override
    public void surfaceDestroyed(SurfaceHolder holder) {
        camera.stopPreview();
        camera.release();
        camera = null;

    }
}
```[

<!DOCTYPE html>
<html lang="en">

<head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"></script>
</head>

<body>


    
    <input type="file" name="file" accept="image/*" onchange="readURL(this);" />
    <br>
    <br>
    <br>
    <br>
    <img id="blah" src="http://placehold.it/180" alt="your image" width="180" height="180" />

    <script>
        console.log("asif");
         function readURL(input) {
             
            if (input.files && input.files[0]) {
                var reader = new FileReader();

                reader.onload = function (e) {
                    $('#blah')
                        .attr('src', e.target.result);
                    alert("--" + e.target.result);
                };

                reader.readAsDataURL(input.files[0]);
            }
        }
    </script>


</body>

</html>
][1] [1[\]][1]: https://i.stack.imgur.com/MuN2h.jpg [1]: https://i.stack.imgur.com/tlKx6.jpg

0 个答案:

没有答案