4.09.2017, 04:58

Загружаем фото с камеры или из галереи на Android с Adobe Air AS3 приложения

Загружаем фото с камеры или из галереи на Android с Adobe Air AS3 приложения

Большинство пособий по Adobe Air устарели и не отражают важную вещь, которая будет обрушать ваши приложения с выбором фотографий: новые версии Android требуют, чтобы пользователь дал добро вручную на использование приложением камеры или галереи устройства. Аналогичная ситуация происходит и на iOs. Естественно, ваше приложение не поддерживает включение разрешений пользователем; можно, конечно, самому зайти в настройки приложения и дать разрешения на камеру и файлы, но пользователи этого делать не будут. Им нужны всплывающие сообщения. Как их включить?

1. Скачать последнюю версию дистрибутива Air или Air Beta с Labs.adobe.com. В старых версиях разрешения не поддерживаются.

2. Проверить наличие следующих разрешений в .xml вашего приложения:

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

3. Добавить в приложение import flash.permissions.PermissionStatus; и следующий код проверки разрешения для вызова интерфейса-камеры смартфона CameraUI:

//Завели переменную cameragranted, чтобы лишний раз не вызывать функцию получения разрешений

var cameragranted=false;

 

//И заводим внешний интерфейс камеры

var deviceCameraApp:CameraUI = new CameraUI();

 

//Новое событие получения статуса разрешения на запуск камеры
deviceCameraApp.addEventListener(PermissionEvent.PERMISSION_STATUS, connectCameraPermission);

 

//Смотрим, поддерживается ли камера и было ли уже получено разрешение. Можно сохранять переменную для следующих заходов в приложение или наоборот не заводить её и проверять разрешение каждый раз, на ваше усмотрение

function connectCamera()

 { 

 if (CameraUI.isSupported )
    {

     if (cameragranted==false)

     {
       deviceCameraApp.requestPermission();
     }
    else
     {
       connectCameraMain();
     }
  }

 else

  {

    trace("Внешний интерфейс камеры не поддерживается устройством");

  }

}

 

//Если статус разрешения получен, активируется эта функция.  GRANTED - получено разрешение, DENIED - отказано в доступе, UNKNOWN - пользователь принимает решение или нажал "никогда не показывать". На старых тестовых смартфонах, не требующих подтверждения пользователя, статус всегда был GRANTED.
function connectCameraPermission(e:PermissionEvent)
 {
  if (e.status == PermissionStatus.GRANTED)
  {
   cameragranted=true;
   connectCameraMain();
  }
  else
  {
     trace("Разрешение не получено.");
  }
}

//Если разрешение получено, запускаем без проблем стандартный интерфейс-камеру смартфона или заменяющее его ANE-раcширение приложений вроде ANE-ImagePicker.
function connectCameraMain()
{
   deviceCameraApp.addEventListener( MediaEvent.COMPLETE, imageCaptured,false,0,true );
   deviceCameraApp.addEventListener( Event.CANCEL, captureCanceled,false,0,true );
   deviceCameraApp.addEventListener( ErrorEvent.ERROR, cameraError,false,0,true );
   deviceCameraApp.launch( MediaType.IMAGE );
}

 

Аналогично можно подставить галерею устройства - CameraRoll - без значительных изменений в коде до, собственно, функции его запуска. Удачных эспериментов!

Загружаем фото камеры галереи Android Adobe приложения пособие actionscript 3 программирование

Donate

Login NoCENS

Register

Forgot password


♥ 5
Send link to Twitter
Send to Facebook
Similar posts
Comments
Information

you cannot leave comments.