В этой статье я хочу рассказать как запустить фото камеру из
вашего android приложения, а также как сделать снимок и сохранить
полученное фото. Предполагается что у вас уже установлена среда
разработки например eclipse и настроен Android SDK.
Для начала необходимо внести изменения в файл AndroidManifest.xml, он находится в корне проекта. Если он октрыт у вас на вкладке Manifest, то вам нужно выбрать AndroidManifest.xml. Далее необходимо добавить следующий код.
здесь мы запрашиваем права на использование камерой и на использование внешним хранилищем данных например SD картой.
Далее можно работать с файлом описывающим работу активности вашего приложения, в моём случае это MainActivity.java
Код который нужно вставить либо в метод public void onCreate(Bundle savedInstanceState) { либо создать отдельный метод. Так как в первом случае камера вызовется сразу после запуска приложения.
private static final int CAMERA_RESULT = 100; это константа для работы с камерй. она обязательна
И так после того как мы объявим в setContentView нашу активность нужно создать имя файла в которое будет писаться снимок фотокамеры.
Что собственно и описано в следующих строках
String timeStamp = new SimpleDateFormat(«yyyyMMdd_HHmmss»).format(new Date(0, 0, 0));
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, «IMG_» + timeStamp + «.jpg»);
Далее объявим событие вызова фото камеры.
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
Теперь скажем куда сохранить полученый рисунок
fileUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
fileUri это константа типа Uri она хранит путь к файлу снимка на карте памяти.
Далее
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); тут мы собственно задаём путь куда сохранить фотку.
И вызываем камеру startActivityForResult(cameraIntent, CAMERA_RESULT);
Теперь необходимо написать метод обработки событий фотокамеры onActivityResult, это стандартное название. Он получает фотографию сделанную с камеры и мы сможем её обработать.
ImageView photoimg = (ImageView)findViewById(R.id.iv_camera);
это созданный обобьет рисунка на layout-е activity_main.xml
вот его структура
if (requestCode == CAMERA_RESULT) {
тут мы проверяем пришел ли результат от камеры
if (resultCode == RESULT_OK) { если всё ок
if(fileUri != null) { и не пуст файл в который сохраняется фото
//устанавливаем превью картинки
photoimg.setImageURI(fileUri); выведем это фото в нашем окне приложения
}
}
И так мы имеем возможно вызвать камеру делать снимки и сохранять их на SD карту.
Так же если подключить телефон к компьютером где установлена среда разработки и запустить приложение на выполнение кнопкой RUN то оно автоматически установится на телефон и запустится.
Для начала необходимо внести изменения в файл AndroidManifest.xml, он находится в корне проекта. Если он октрыт у вас на вкладке Manifest, то вам нужно выбрать AndroidManifest.xml. Далее необходимо добавить следующий код.
здесь мы запрашиваем права на использование камерой и на использование внешним хранилищем данных например SD картой.
Далее можно работать с файлом описывающим работу активности вашего приложения, в моём случае это MainActivity.java
Код который нужно вставить либо в метод public void onCreate(Bundle savedInstanceState) { либо создать отдельный метод. Так как в первом случае камера вызовется сразу после запуска приложения.
public class MainActivity extends Activity {И так поясню что гле:
private static final int CAMERA_RESULT = 100;
public static final int MEDIA_TYPE_IMAGE = 1;
private Uri fileUri;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String timeStamp = new SimpleDateFormat(«yyyyMMdd_HHmmss»).format(new Date(0, 0, 0));
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, «IMG_» + timeStamp + «.jpg»);
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
fileUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
startActivityForResult(cameraIntent, CAMERA_RESULT);
}
private static final int CAMERA_RESULT = 100; это константа для работы с камерй. она обязательна
И так после того как мы объявим в setContentView нашу активность нужно создать имя файла в которое будет писаться снимок фотокамеры.
Что собственно и описано в следующих строках
String timeStamp = new SimpleDateFormat(«yyyyMMdd_HHmmss»).format(new Date(0, 0, 0));
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, «IMG_» + timeStamp + «.jpg»);
Далее объявим событие вызова фото камеры.
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
Теперь скажем куда сохранить полученый рисунок
fileUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
fileUri это константа типа Uri она хранит путь к файлу снимка на карте памяти.
Далее
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); тут мы собственно задаём путь куда сохранить фотку.
И вызываем камеру startActivityForResult(cameraIntent, CAMERA_RESULT);
Теперь необходимо написать метод обработки событий фотокамеры onActivityResult, это стандартное название. Он получает фотографию сделанную с камеры и мы сможем её обработать.
protected void onActivityResult(int requestCode, int resultCode, Intent data) {Итак
super.onActivityResult(requestCode, resultCode, data);
ImageView photoimg = (ImageView)findViewById(R.id.iv_camera);
if (requestCode == CAMERA_RESULT) {
if (resultCode == RESULT_OK) {
if(fileUri != null) {
//устанавливаем превью картинки
photoimg.setImageURI(fileUri);
}
} else if (resultCode == RESULT_CANCELED) {
// User cancelled the image capture
} else {
// Image capture failed, advise user
}
}
}
ImageView photoimg = (ImageView)findViewById(R.id.iv_camera);
это созданный обобьет рисунка на layout-е activity_main.xml
вот его структура
Это необходимо добавить на ctivity_main.xml, что бы мы могли увидеть потом что получилось в результате съёма фото.android:id=»@+id/iv_camera»
android:layout_width=»wrap_content»
android:layout_height=»wrap_content»
android:layout_alignLeft=»@+id/textView1″
android:layout_centerVertical=»true»
android:src=»@drawable/ic_launcher» />
if (requestCode == CAMERA_RESULT) {
тут мы проверяем пришел ли результат от камеры
if (resultCode == RESULT_OK) { если всё ок
if(fileUri != null) { и не пуст файл в который сохраняется фото
//устанавливаем превью картинки
photoimg.setImageURI(fileUri); выведем это фото в нашем окне приложения
}
}
И так мы имеем возможно вызвать камеру делать снимки и сохранять их на SD карту.
Так же если подключить телефон к компьютером где установлена среда разработки и запустить приложение на выполнение кнопкой RUN то оно автоматически установится на телефон и запустится.