public class AndroidCamera extends Activity implements SurfaceHolder.Callback{
Camera camera;
SurfaceView surfaceView;
SurfaceHolder surfaceHolder;
boolean previewing = false;;
PictureCallback rawCallback;
ShutterCallback shutterCallback;
PictureCallback jpegCallback;
private Bitmap bitmap;
TextView colorRGB;
Config config;
String callname;
String callnamePimage;
String callnameRimage;
String name = null;
EditText txtData, Info,Age;
ImageView imageView = null;
ImageView imageView2 = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button buttonStartCameraPreview = (Button)findViewById(R.id.startcamerapreview);
Button buttonStopCameraPreview = (Button)findViewById(R.id.stopcamerapreview);
Button buttonCapturePreview = (Button) findViewById(R.id.capturepreview);
Button testButton = (Button) findViewById(R.id.testButton);
txtData = (EditText) findViewById(R.id.editText1);
Info = (EditText) findViewById(R.id.Name);
Info.setHint("enter name");
Age = (EditText) findViewById(R.id.Age);
Age.setHint("Age");
getWindow().setFormat(PixelFormat.UNKNOWN);
surfaceView = (SurfaceView)findViewById(R.id.surfaceview);
surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(this);
imageView=(ImageView)findViewById(R.id.imageView1);
imageView2=(ImageView)findViewById(R.id.imageView2);
rawCallback = new PictureCallback()
{
public void onPictureTaken(byte[] data, Camera camera)
{
Log.d("Log", "onPictureTaken - raw");
}
};
shutterCallback = new ShutterCallback()
{
public void onShutter() {
Log.i("Log", "onShutter'd");
}
};
jpegCallback = new PictureCallback()
{
public void onPictureTaken(byte[] data, Camera camera)
{
Intent imageIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
File imagesFolder = new File(Environment.getExternalStorageDirectory(), "/Raw Image");
imagesFolder.mkdirs();
Date d = new Date();
CharSequence s = DateFormat.format("MM-dd-yy hh-mm-ss", d.getTime());
name = s.toString() + ".jpg";
File output = new File(imagesFolder, name);
Uri uriSavedImage = Uri.fromFile(output);
imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
OutputStream imageFileOS;
try {
imageFileOS = getContentResolver().openOutputStream(uriSavedImage);
imageFileOS.write(data);
imageFileOS.flush();
imageFileOS.close();
Toast.makeText(AndroidCamera.this,
"Image saved: ",
Toast.LENGTH_LONG).show();
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{}
Log.d("Log", "onPictureTaken - jpeg");
callname = "/sdcard/Raw Image/" + name;
Bitmap bitmap = BitmapFactory.decodeFile(callname);
//imageView.setImageBitmap(bitmap);//Displaying raw Image
displayimages();
}
}
buttonStartCameraPreview.setOnClickListener(new Button.OnClickListener()
{
@TargetApi(Build.VERSION_CODES.GINGERBREAD)
@Override
public void onClick(View v)
{
if(!previewing)
{
camera = Camera.open(0);
if (camera != null)
{
try {
camera.setPreviewDisplay(surfaceHolder);
camera.startPreview();
previewing = true;
}
catch (IOException e)
{
e.printStackTrace();
}
}else txtData.setText("null");
}
}});
buttonCapturePreview.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
captureImage();
}
});
buttonStopCameraPreview.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v)
{
if(camera != null && previewing)
{
camera.stopPreview();
camera.release();
camera = null;
previewing = false;
}
}});
}
private void captureImage()
{
camera.takePicture(shutterCallback, rawCallback, jpegCallback);
}
private void displayimages()
{
// TODO Auto-generated method stub
setContentView(R.layout.display);
callnameRimage = "/sdcard/Raw Image/" + name;
Bitmap bitmap1 = BitmapFactory.decodeFile(callnameRimage);
imageView2.setImageBitmap(bitmap1);
}
"main"이라는 XML 파일을 사용했으며 표면보기와 일부 버튼이 있습니다. 이걸로 Raw Image라는 폴더에 이미지를 저장했습니다. 이 이미지를 "display"라는 다른 xml 파일에있는 이미지보기로 디코딩해야합니다. 내가 프로그램을 실행하면 추락한다. 코드를 추가했습니다 ... 어디서 잘못되었는지 지적 해주십시오.동일한 프로그램에서 다른 xml 파일 호출 : android
로그 고양이 오류
12-12 10:40:48.836: E/AndroidRuntime(1362): FATAL EXCEPTION: main
12-12 10:40:48.836: E/AndroidRuntime(1362): java.lang.NullPointerException
12-12 10:40:48.836: E/AndroidRuntime(1362): at com.example.imaging.AndroidCamera.displayimages(AndroidCamera.java:397)
12-12 10:40:48.836: E/AndroidRuntime(1362): at com.example.imaging.AndroidCamera.access$0(AndroidCamera.java:390)
12-12 10:40:48.836: E/AndroidRuntime(1362): at com.example.imaging.AndroidCamera$3.onPictureTaken(AndroidCamera.java:313)
12-12 10:40:48.836: E/AndroidRuntime(1362): at android.hardware.Camera$EventHandler.handleMessage(Camera.java:687)
12-12 10:40:48.836: E/AndroidRuntime(1362): at android.os.Handler.dispatchMessage(Handler.java:99)
12-12 10:40:48.836: E/AndroidRuntime(1362): at android.os.Looper.loop(Looper.java:137)
12-12 10:40:48.836: E/AndroidRuntime(1362): at android.app.ActivityThread.main(ActivityThread.java:4424)
12-12 10:40:48.836: E/AndroidRuntime(1362): at java.lang.reflect.Method.invokeNative(Native Method)
12-12 10:40:48.836: E/AndroidRuntime(1362): at java.lang.reflect.Method.invoke(Method.java:511)
12-12 10:40:48.836: E/AndroidRuntime(1362): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
12-12 10:40:48.836: E/AndroidRuntime(1362): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
12-12 10:40:48.836: E/AndroidRuntime(1362): at dalvik.system.NativeStart.main(Native Method)
충돌 보고서는 어디에 있습니까? – GrIsHu
logcat 오류를 추가했습니다. 어디가 잘못되었는지 알려주십시오. – Aswathy
내 대답을 확인하십시오. @ user3040168 – GrIsHu