Как получить доступ к камере на телефонах Android? - PullRequest
10 голосов
/ 24 сентября 2010

Я написал программу на Java, которая берет файл изображения и манипулирует изображением.Сейчас я пытаюсь получить доступ к камере, чтобы я мог сделать снимок и передать его программе обработки изображений, однако я не знаю, как это сделать.Я прочитал информацию о классе камеры и о том, как запрашивать разрешения, но я не знаю, как на самом деле сделать фотографию.Если у кого-нибудь есть какие-либо советы о том, с чего мне начать, или если они знают хороший учебник, я буду очень признателен.Спасибо!

Ответы [ 4 ]

7 голосов
/ 24 сентября 2010

Google - ваш лучший друг, вот несколько уроков:

Использование камеры

Инструкции по программированию камеры Google Android для съемки

Сделайте снимок из эмулятора камеры

камера

Сначала отредактируйте свой AndroidManifest.xml, добавьте разрешение камеры:

<uses-permission android:name=”android.permission.CAMERA”/>

Служба камеры должна быть открыта и закрыта:

Camera camera = Camera.open();
 //Do things with the camera
camera.release();

Вы можете установить настройки камеры, например:

Camera.Parameters parameters = camera.getParameters();
parameters.setPictureFormat(PixelFormat.JPEG); 
camera.setParameters(parameters);

Чтобы сделать снимок:

private void takePicture() {
  camera.takePicture(shutterCallback, rawCallback, jpegCallback); 
}

ShutterCallback shutterCallback = new ShutterCallback() {
  public void onShutter() {
    // TODO Do something when the shutter closes.
  }
};

PictureCallback rawCallback = new PictureCallback() {
  public void onPictureTaken(byte[] _data, Camera _camera) {
    // TODO Do something with the image RAW data.
  }
};

PictureCallback jpegCallback = new PictureCallback() {
  public void onPictureTaken(byte[] _data, Camera _camera) {
    // TODO Do something with the image JPEG data.
  }
};

Не забудьте добавить макет камеры в основной макет xml.

6 голосов
/ 24 сентября 2010

Есть много способов, которыми вы можете сделать это .... Одним из лучших способов, который я считаю коротким и простым, является нажатие кнопки. Вы можете вызвать намерение, открывающее встроенный вид камеры ... вот пример кода ...

public class CameraDemo extends Activity {

Button ButtonClick;
int CAMERA_PIC_REQUEST = 2; 
int  TAKE_PICTURE=0;
Camera camera;


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

    ButtonClick =(Button) findViewById(R.id.Camera);
    ButtonClick.setOnClickListener(new OnClickListener (){
        @Override
        public void onClick(View view)
        {
            Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);
        }
    });        
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{
    super.onActivityResult(requestCode, resultCode, data);
    if( requestCode == CAMERA_PIC_REQUEST)
    {   
        Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
        ImageView image =(ImageView) findViewById(R.id.PhotoCaptured);
        image.setImageBitmap(thumbnail);
    }
    else 
    {
        Toast.makeText(demo.this, "Picture NOt taken", Toast.LENGTH_LONG);
    }

}
}

............................................... ...............

Пройдите через него и, если у вас возникнут проблемы, не стесняйтесь спрашивать ....

Ракеш

2 голосов
/ 28 ноября 2012

Существует два способа сделать снимок для вашего приложения для Android

1) Использование намерения

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE); // create a file to save the image
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); // set the image file name

// start the image capture Intent
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);

2) Создание настраиваемого действия камеры.Для этого вам нужно выполнить следующие шаги

 * Detect and Access Camera
 * Create a Preview Class
 * Build a Preview Layout 
 * Capture and Save Files
 * Release the Camera

Также вы можете обратиться по следующим ссылкам:

http://developer.android.com/guide/topics/media/camera.html http://developer.android.com/reference/android/hardware/Camera.html

0 голосов
/ 24 сентября 2010

самый важный метод:

Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() {
    public void onPictureTaken(byte[] imageData, Camera c) {

    }
};

Этот метод вызывается при съемке.Вот хороший учебник по этой теме: http://www.brighthub.com/mobile/google-android/articles/43414.aspx

хмм ... или, может быть, вам нужен этот:

Camera mCamera;
...
public void onClick(View arg0) {
    mCamera.takePicture(null, mPictureCallback, mPictureCallback);
}

Вот еще один пример: http://snippets.dzone.com/posts/show/8683

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...