камера не открыта в xamarin - PullRequest
0 голосов
/ 27 апреля 2018

Я новичок в xamarin. У меня есть проект для android и ios в xamarin. У меня успешно открыта камера в ios, но не открыт в android. Ниже приведен мой код.

static async Task<Plugin.Media.Abstractions.MediaFile> TakePicture()
        {
            await CrossMedia.Current.Initialize();

            if (CrossMedia.Current.IsTakePhotoSupported)
            {
                //var imageProcessing = DependencyService.Get<IImageProcessing> ();
                //              imageProcessing.TakePhoto ();
                //              return null;

                var options = new Plugin.Media.Abstractions.StoreCameraMediaOptions();

                //options.Directory = imageProcessing.GetImageDir ();
                return await CrossMedia.Current.TakePhotoAsync(options);
            }
            else
            {
                return null;
            }
        }

Я добавил разрешение на manifest.xml . Когда я запускаю проект на своем устройстве, он запрашивает разрешение, но не открывает камеру.

, пожалуйста, помогите мне устранить эту проблему.

Ответы [ 3 ]

0 голосов
/ 01 января 2019

добавить AndroidManifest.xml

<provider android:name="android.support.v4.content.FileProvider" android:authorities="com.AppName.app.fileprovider" android:exported="false" android:grantUriPermissions="true">
        <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/provider_paths"></meta-data>
    </provider>
0 голосов
/ 01 января 2019

используйте это намерение

Intent intent = new Intent (MediaStore.ActionImageCapture); BitmapHelper._file = новый файл (BitmapHelper. dir, String.Format ("myProfileTemp {0} .jpg", Guid.NewGuid ()));

            Android.Net.Uri uri = FileProvider.GetUriForFile(this.BaseContext, "com.AppName.app.fileprovider", BitmapHelper._file);
            intent.PutExtra(MediaStore.ExtraOutput, uri);
            StartActivityForResult(intent, CAMERA_REQUEST);
0 голосов
/ 30 апреля 2018

Чтобы использовать Media Plugin для Xamarin, вам необходимо выполнить некоторые дополнительные необходимые настройки, как описано в readme.txt.

Дополнительные обязательные настройки (пожалуйста, прочитайте!)

Android

В BaseActivity или MainActivity (для Xamarin.Forms) добавьте этот код:

Добавить употребления:

using Plugin.Permissions;
using Plugin.Permissions.Abstractions;

Затем добавьте в Активность:

public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults)
{
    PermissionsImplementation.Current.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}

Требуются разрешения WRITE_EXTERNAL_STORAGE, READ_EXTERNAL_STORAGE, но библиотека автоматически добавит это для вас. Кроме того, если ваши пользователи используют Marshmallow, плагин автоматически запросит у них разрешения во время выполнения.

ANDROID N Если ваше приложение предназначено для Android N (API 24) или новее, вы должны использовать версию 2.6.0 +.

Вы также должны добавить несколько дополнительных файлов конфигурации, чтобы придерживаться нового строгого режима:

1.) Добавьте следующее в ваш AndroidManifest.xml внутри тегов:

<provider android:name="android.support.v4.content.FileProvider" 
                android:authorities="YOUR_APP_PACKAGE_NAME.fileprovider" 
                android:exported="false" 
                android:grantUriPermissions="true">
            <meta-data android:name="android.support.FILE_PROVIDER_PATHS" 
                android:resource="@xml/file_paths"></meta-data>
</provider>

YOUR_APP_PACKAGE_NAME должно быть установлено в имени пакета вашего приложения!

2.) Добавьте новую папку с именем xml в папку ресурсов и добавьте новый файл XML с именем file_paths.xml

Добавьте следующий код:

<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <external-files-path name="my_images" path="Pictures" />
    <external-files-path name="my_movies" path="Movies" />
</paths>

Для YOUR_APP_PACKAGE_NAME должно быть указано имя пакета вашего приложения!

Вы можете прочитать больше на: https://developer.android.com/training/camera/photobasics.html

Настройка текущей активности Android

Этот плагин использует Плагин текущей активности , чтобы получить доступ к текущей активности Android. Обязательно завершите полную настройку, если файл MainApplication.cs не был автоматически добавлен в ваше приложение. Пожалуйста, полностью прочитайте Текущую документацию по плагинам активности . В абсолютном минимуме вы должны установить следующее в методе OnCreate вашей Деятельности:

csharp Plugin.CurrentActivity.CrossCurrentActivity.Current.Activity = this;

Настоятельно рекомендуется использовать пользовательское приложение, описанное в Документация по текущему подключаемому модулю

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