안녕하세요 저는 옵티머스g프로를 사용하는데
카메라 어플을 연습하는 중인데 제가가지고 있는 코드가 삼성폰은 되는데
엘지폰은 되지가 않습니다. 앱안에 버튼을 누르면 어플이 바로 뻗어버리는데
원인을 잘 모르겠습니다. 디버깅해서 찾아보려고해도 아직 안드로이드 부분을 잘 몰라서 .... 그리고 지금 코드가 전방카메라로 되어있는데 후방카메라로 전환할려면 어떻게 바꿔야 되는지도 궁금합니다.
//메인
import android.hardware.Camera;
import android.hardware.Camera.CameraInfo;
import android.os.Bundle;
import android.app.Activity;
import android.content.pm.PackageManager;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class Main extends Activity implements OnClickListener
{
Button button;
private Camera camera;
private int cameraId = 0;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button = (Button)findViewById(R.id.button);
button.setOnClickListener(this);
if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA))
{
Toast.makeText(this, "Camera is not found in your device", Toast.LENGTH_SHORT).show();
}
else
{
cameraId = findFrontSideCamera();
if (cameraId < 0)
{
Toast.makeText(this, "Front side camera is not found",Toast.LENGTH_SHORT).show();
}
else
{
camera = Camera.open(cameraId);
}
}
}
private int findFrontSideCamera()
{
int cameraId = -1;
int numberOfCameras = Camera.getNumberOfCameras();
for (int i = 0; i < numberOfCameras; i++)
{
CameraInfo info = new CameraInfo();
Camera.getCameraInfo(i, info);
if (info.facing == CameraInfo.CAMERA_FACING_FRONT)
{
cameraId = i;
break;
}
}
return cameraId;
}
public void onClick(View view)
{
CameraHandler ch = new CameraHandler(getApplicationContext());
camera.takePicture(null, null,ch);
}
@Override
protected void onPause()
{
// TODO Auto-generated method stub
if(camera!=null)
{
camera.release();
camera = null;
}
super.onPause();
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
-----------------------
//사진찍은후 저장,,CameraHandler
import java.io.File;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import android.content.Context;
import android.hardware.Camera;
import android.hardware.Camera.PictureCallback;
import android.os.Environment;
import android.widget.Toast;
public class CameraHandler implements PictureCallback
{
String str = "CameraExampleFolder";
private final Context context;
public CameraHandler(Context context)
{
this.context = context;
}
@Override
public void onPictureTaken(byte[] data, Camera camera)
{
// TODO Auto-generated method stub
File file = getDir();
if(!file.exists() && !file.mkdirs())
{
Toast.makeText(context, "File and Directory handling has some errors.", Toast.LENGTH_LONG).show();
return;
}
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyymmddhhmmss");
String date = dateFormat.format(new Date());
String photoFile = "App_Test" + date + ".jpg";
String filename = file.getPath() + File.separator + photoFile;
File takenPicture = new File(filename);
try
{
FileOutputStream fos = new FileOutputStream(takenPicture);
fos.write(data);
fos.close();
Toast.makeText(context, "The taken photo is saved:" + photoFile,Toast.LENGTH_SHORT).show();
}
catch (Exception error)
{
Toast.makeText(context, "Saving process has some errors.", Toast.LENGTH_LONG).show();
}
}
private File getDir()
{
File sd_Dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
return new File(sd_Dir,str);
}
}
--------------------------
//메니페스트
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.camera.cameraexample"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="15"
android:targetSdkVersion="15" />
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.camera.cameraexample.Main"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>