2016-06-27 6 views
0

私は非常に単純なアプリケーションを作りたいと思います。カメラを相対レイアウトで開きたいのですが、カメラの代わりに黒い画面しか表示されません。 私は非常に簡単なコードAndroidカメラのバグ

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>