获取按钮以打开表面视图中具有相机预览的自定义对话框

时间:2014-07-07 21:55:15

标签: android camera surfaceview

我有两个按钮需要打开一个自定义对话框,该对话框的表面视图应该能够保存相机预览。我需要没有默认的相机控件,只需要预览本身,在另一个包含按钮的布局后面。

这是我按钮的代码:

topeyebtn.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View arg3) {

                                //Starting a new Intent

                                Intent topClick = new Intent(Intent.ACTION_VIEW,      Uri.parse("http://funnmag.com"));

                                // starting new activity

                                startActivity(topClick);      
             }});

这是我的表面视图和相机预览的代码:

package com.adanawtn.FunnMagViewerWindow;

import java.io.IOException;
import android.app.Activity;
import android.graphics.PixelFormat;
import android.hardware.Camera;
import android.os.Bundle;
 import android.view.SurfaceHolder;
 import android.view.SurfaceView;
 import android.view.ViewGroup.LayoutParams;

 public class camerapreview extends Activity {

 private SurfaceView surface_view;  
 private Camera mCamera;
 SurfaceHolder.Callback sh_ob = null;
 SurfaceHolder surface_holder        = null;
 SurfaceHolder.Callback sh_callback  = null;


@Override
 protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);

     getWindow().setFormat(PixelFormat.TRANSLUCENT);

     surface_view = new SurfaceView(getApplicationContext());
     addContentView(surface_view, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

     if (surface_holder == null) {
         surface_holder = surface_view.getHolder();
     }

     sh_callback = my_callback();
     surface_holder.addCallback(sh_callback);
 }

     SurfaceHolder.Callback my_callback() {      
         SurfaceHolder.Callback ob1 = new SurfaceHolder.Callback() {

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

             @Override
             public void surfaceCreated(SurfaceHolder holder) {
                 mCamera = Camera.open();

                   try {
                        mCamera.setPreviewDisplay(holder);  
                   } catch (IOException exception) {  
                         mCamera.release();  
                         mCamera = null;  
                   }
             }

             @Override
             public void surfaceChanged(SurfaceHolder holder, int format, int width,
                     int height) {
                 mCamera.startPreview();
             }
         };
         return ob1;
 }
}

0 个答案:

没有答案