2016-04-09 5 views
0

私はアンドロイドアプリにカメラを表示しようとしていますが、私が得ているのはSurfaceViewがあるブラックボックスです。SurfaceViewはカメラを表示していません

Result

ここ
public class MainActivity extends AppCompatActivity implements SurfaceHolder.Callback { 

    SurfaceView surfaceView; 


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

     setContentView(R.layout.activity_main); 

     surfaceView = (SurfaceView)findViewById(R.id.surface_view); 

    } 

    @Override 
    public void surfaceCreated(SurfaceHolder holder) { 
     try{ 
      CameraManager cameraManager = (CameraManager)getSystemService(Context.CAMERA_SERVICE); 

      String[] cameras = cameraManager.getCameraIdList(); 
      cameraManager.openCamera(cameras[0], deviceCallback, null); 
     } catch (CameraAccessException e) { 
      e.printStackTrace(); 
     } 

    } 

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

    @Override 
    public void surfaceDestroyed(SurfaceHolder holder) {} 


    CameraDevice.StateCallback deviceCallback = new CameraDevice.StateCallback() { 

     @Override 
     public void onOpened(CameraDevice camera) { 
      try { 
       List<Surface> surfaceList = Collections.singletonList(surfaceView.getHolder().getSurface()); 
       camera.createCaptureSession(surfaceList, sessionCallback, null); 
      } catch (CameraAccessException e) { 
       e.printStackTrace(); 
      } 
     } 

     @Override 
     public void onDisconnected(CameraDevice camera) {} 

     @Override 
     public void onError(CameraDevice camera, int error) {} 
    }; 

    CameraCaptureSession.StateCallback sessionCallback = new CameraCaptureSession.StateCallback() { 
     @Override 
     public void onConfigured(CameraCaptureSession session) { 
     } 

     @Override 
     public void onConfigureFailed(CameraCaptureSession session) {} 
    }; 
} 

は、アプリが自分の携帯電話上で実行されたときに表示されますどのようなものです。この活動に

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.lazylayer.photoshoot.MainActivity"> 

    <SurfaceView 
     android:id="@+id/surface_view" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

</RelativeLayout> 

私はこの単純なXMLレイアウトを使用しています

+0

マニフェストの許可を追加しましたか? –

+0

私は ''を持っています。 –

答えて

0

FrameLayoutを使用して問題を解決できましたaの代わりにSurfaceView

<FrameLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/camera_view"> 
</FrameLayout> 
関連する問題