J2J.RU - cовременная система продвижения сайтов
Меню сайта

Категории раздела

Наш опрос
Какой у Вас Андроид
Всего ответов: 192

Файлы
Новые Популярные Лучшие


Теги
Android (34)
uCoz (8)
mobile (3)
sistem (3)
xml (3)
google (2)
html (2)
Oboi (2)
opera (2)
Rest (2)
soap (2)
action (1)
ajax (1)
App2SD (1)
apps (1)
CSS (1)
Ddms (1)
editor (1)
gmail (1)
gobook (1)
java (1)
legend (1)
Lite (1)
live (1)
mp3 (1)
mrtm (1)
Muse (1)
ninja (1)
pdf (1)
php (1)
Root (1)
sensor (1)
shazam (1)
sql (1)
thread (1)
touch (1)
UI (1)
Widget (1)
Worms (1)
Xplore (1)
Zirco (1)

RSS
  
Новостная лента.

Форумная лента.

Файловая лента.  

Главная » Статьи » Программинг » Программирование [ Добавить статью ]

Как получить снимок с камеры в Android приложении

Создание Android приложения

Android Camera Программирование для Android подразумевает решение очень широкого круга задач, и хотя использование камеры - не самая распространенная из них, тем не менее на тематических форумах довольно часто встречаются вопросы, связанные с этой темой.  Давайте для примера разработаем простую программу, демонстрирующую использование встроенного в android приложения для работы с камерой для получения снимка. Логика работы нашего приложения будет довольно проста: при нажатии на кнопку у нас будет запускаться стандартная программа для работы с камерой. После того, как мы сделаем  снимок и закроем это приложение, результат будет отображаться в ImageView. Ниже приводится код файла манифеста и макета заготовки нашего приложения

xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
 package="ru.mobilab.sample"
 android:versionCode="1"
 android:versionName="1.0" >
 
 <uses-sdk android:minSdkVersion="8" />
 <application
 android:icon="@drawable/ic_launcher"
 android:label="@string/app_name" >
 <activity
 android:name=".MlCameraSampleActivity"
 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>
package ru.mobilab.sample;
 
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
 
public class MlCameraSampleActivity extends Activity {
 /** Called when the activity is first created. */
 
 @Override
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.main);
 
 final Button button1 = (Button) findViewById(R.id.button1);
 button1.setOnClickListener(button_click);
 }
 
 public OnClickListener button_click = new OnClickListener() {
 
 public void onClick(View v) {
 // TODO Auto-generated method stub
 }
 };
}

Запускаем приложение для работы с Android камерой


В android новые деятельности и службы запускаются с помощью, так называемых интентов (intent). Для запуска стандартного приложения для работы с камерой нужно использовать следующий интент:

android.provider.MediaStore.ACTION_IMAGE_CAPTURE

Давайте создадим его внутри метода button_click :

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 

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

Обычно интенты запускаются с помощью метода startActivity(), однако в случае, когда приложение ждет от интента какого-то результата, необходимо использовать метод startActivityForResult(). Для того, чтобы получить от стандартного приложения камеры снимок, мы должны запустить интент следующим образом:

startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST); 

После того как пользователь сделал снимок и завершил Activity камеры, картинка будет доступна через метод onActivityResult(). Вам нужно переопределить этот callback метод внутри своего приложения:

 protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
 if (requestCode == CAMERA_PIC_REQUEST) { 
 // do something 
 } 
 } 
 

И снова, CAMERA_PIC_REQUEST - это константа, которую нужно определить в своем приложении и ее значение будет ассоциироваться с результатом, возвращаемым интентом:

 private static final int CAMERA_PIC_REQUEST = 1112;


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

Получаемое в результате изображение адаптировано для показа на маленьком экране телефона и представлено в виде объекта Bitmap

 Bitmap thumbnail = (Bitmap) data.getExtras().get("data"); 

Для того чтобы показать это изображение в ImageView нужно воспользоваться методом setImageBitmap().

ImageView image = (ImageView) findViewById(R.id.photoResultView); 
image.setImageBitmap(thumbnail); 

В результате всех наших манипуляций наш java проект будет иметь вид:

package ru.mobilab.sample;
 
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
 
public class MlCameraSampleActivity extends Activity {
 /** Called when the activity is first created. */
 private static final int CAMERA_PIC_REQUEST = 1112;
 
 @Override
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.main);
 
 final Button button1 = (Button) findViewById(R.id.button1);
 button1.setOnClickListener(button_click);
 }
 
 public OnClickListener button_click = new OnClickListener() {
 
 public void onClick(View v) {
 // TODO Auto-generated method stub
 Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
 startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST); 
 
 }
 };
 
 protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
 if (requestCode == CAMERA_PIC_REQUEST) { 
 Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
 ImageView image = (ImageView) findViewById(R.id.imageView1); 
 image.setImageBitmap(thumbnail);
 } 
 }
}

И не забудьте про разрешения. Чтобы приложение заработало нужно добавить в uses-permission значение android.permission.CAMERA.

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

Как видите, добавить поддержку камеры в свое приложение очень просто, однако не все пользователи имеют телефоны с камерой. К счастью есть простой способ решения этой проблемы. Нужно просто запретить устанавливать это приложение таким пользователям. Для этого нужно использовать тег <uses-feature> в манефесте Вашего приложения:

<uses-feature android:name="android.hardware.camera"></uses-feature> 

После добавления этой строки Ваше приложение не будет показываться пользователям без камеры в Google Play Market. Тем не менее, <uses-feature> вовсе не запрещает прямую установку приложения на неподходящий телефон - это просто фильтр для Google Play Market.


ИсточникLauren Darcey and Shane Conder "Android SDK Quick Tip: Launching the Camera"
Перевод и адаптация: Александр Ледков

Категория: Программирование | Добавил: Virus (29.11.2012)

Похожие темы на пост "Как получить снимок с камеры в Android приложении"

Схожие темы выбранные по тегам : Android, камеры, программирование, приложении, снимок
  
Просмотров: 1443 | Рейтинг: 0.0/0

Дорогие пользователи и гости сайта!!! Пожалуйста, если вам не сложно, оставте комментарий или ваше мнение о портале в Гостевой книге. Ваше мнение очень важно для нас и очень поможет в поиске дальнейшего пути развития сайта. С уважением, Администрация сайта AndroBum!



Так же рекомендуем:
Всего комментариев: 0
Информация:
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.

[ Регистрация | Вход ]
Поиск

Мини-чат

Block title
Virus
файлов: 69
Постов: 38
Комментов: 1005
Репутация: 0
Ранг:

droid
файлов: 3
Постов: 0
Комментов: 0
Репутация: 100
Ранг:

Serge
файлов: 1
Постов: 0
Комментов: 0
Репутация: 0
Ранг:

Sergey
файлов: 1
Постов: 0
Комментов: 0
Репутация: 0
Ранг:

Аватар не установлен! Blackfoxxx
файлов: 0
Постов: 0
Комментов: 0
Репутация: 0
Ранг:


Друзья сайта
  • Официальный блог
  • скрипты, шаблоны, html, css
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz

  • Статистика Сайта
    Статистика сайта как на сайте

    Пользователей всего: +0
    Материалов всего [?]: +
    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
    Гости сайта Пользователи

    Яндекс.Метрика




    Пользователи онлайн:


    Flag Counter



    Все материалы размещенные на сайте принадлежат их владельцам.
    Copyright dodomo.do.am © 2010-2012