2016-06-27 2 views
0

Я хочу сделать очень простое приложение, и я хочу открыть камеру в Relative Layout, но вместо камеры я вижу только черный экран. код я очень простойAndroid Camera Bug

public class MainActivity extends AppCompatActivity { 


/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

} 

public void button(android.view.View v){ 
    android.hardware.Camera camera = android.hardware.Camera.open(); 
    RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.video); 
    SurfaceView surfaceView = new SurfaceView(getApplicationContext()); 

    relativeLayout.addView(surfaceView); 

    SurfaceHolder surfaceHolder = surfaceView.getHolder(); 

    try { 
     camera.setPreviewDisplay(surfaceHolder); 
     camera.startPreview(); 
    } catch (IOException e) {}; 

} 

}

Как я могу это исправить?

+0

Что вы хотите сделать после того, как вы открыть камеру? –

+0

Можете ли вы пометить мой ответ как ответ на свой вопрос, если вы удовлетворены этим? –

ответ

0

С помощью приведенного ниже кода вы можете открыть камеру, нажав на кнопку, сделать снимок и отобразить его на изображении. Не забудьте отредактировать YOUR_PROJECT перед тестированием/использованием.

Ваш Java файл:

package YOUR_PROJECT; 

import android.content.Intent; 
import android.graphics.Bitmap; 
import android.os.Bundle; 
import android.provider.MediaStore; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.Button; 
import android.widget.ImageView; 


public class MainActivity extends AppCompatActivity { 

ImageView iv; 

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

    //Initialize Image view and Buttons 
    iv = (ImageView) findViewById(R.id.imageView); 
    Button btnCapture = (Button) findViewById(R.id.button_camera); 

    //Set listener on Capture button 
    btnCapture.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent c = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); //Implicit Intent 
      startActivityForResult(c, 0); 
     } 
    }); 


} 

//Override method onActivityResult used to retreive the image 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    Bitmap m = (Bitmap) data.getExtras().get("data"); 
    iv.setImageBitmap(m); 
    iv.setScaleType(ImageView.ScaleType.FIT_XY); 
} 
} 

Ваш XML:

<?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" 

tools:context="YOUR_PROJECT.MainActivity"> 
    <ImageView 
     android:id="@+id/imageView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" /> 

    <Button 
     android:id="@+id/button_camera" 
     android:text="Camera" 
     android:layout_width="127dp" 
     android:layout_height="106dp" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true"/> 
</RelativeLayout>