마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 카메라 코드 엘지와 삼성 질문입니다.

0 추천

안녕하세요 저는 옵티머스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>

 

카다쿠리 (280 포인트) 님이 2013년 11월 6일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...