Xamarin я не могу включить фонарик на версии 5.1.1 (Samsung) & amp; 4.42 (LG G3) [дубликат]

Другой способ взглянуть на это: Используются 64 бита для представления чисел. Как следствие, не может быть представлено более 2 ** 64 = 18 446 744 073 709 551 616 различных чисел.

Тем не менее, Math говорит, что существует уже бесконечное число десятичных знаков между 0 и 1. IEE 754 определяет кодировку для эффективного использования этих 64 бит для гораздо большего количества пробелов плюс NaN и +/- Infinity, поэтому есть пробелы между точно представленными числами, заполненными числами, только приближены.

К сожалению, 0,3 сидит в промежутке.

45
задан Ciro Santilli 新疆改造中心 六四事件 法轮功 15 February 2016 в 16:35
поделиться

12 ответов

попробуйте это ...

 static Camera camera = null;

объявить его сверху.

 try{ 
   if(clickOn == true) {
       clickOn = false;
       camera = Camera.open();
       Parameters parameters = camera.getParameters();
       parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);
       camera.setParameters(parameters);
       camera.startPreview();

       remoteViews.setViewVisibility(R.id.button1, View.GONE);
       remoteViews.setViewVisibility(R.id.button2, View.VISIBLE);
       localAppWidgetManager.updateAppWidget(componentName, remoteViews);
   } else {
       clickOn = true;
       camera.stopPreview();
       camera.release();
       camera = null;

       remoteViews.setViewVisibility(R.id.button1, View.VISIBLE);
       remoteViews.setViewVisibility(R.id.button2, View.GONE);
       localAppWidgetManager.updateAppWidget(componentName, remoteViews);
   }    
} catch(Exception e) {
   Log.e("Error", ""+e);
}
16
ответ дан Oliv 25 August 2018 в 17:09
поделиться

Эта проблема может возникнуть в android 6.0, если вы не разрешили разрешение камеры для своего приложения. Как и в случае с Android 6.0, вы можете обрабатывать разрешение на разрешение приложения, которое вы предоставите или не имеете конкретных прав для приложения.

Итак, вам нужно разрешить разрешение из settings->apps->your_app->enable camera permission, если оно еще не включено.

8
ответ дан 0xalihn 25 August 2018 в 17:09
поделиться

Попробуйте использовать эту строку, когда вы выходите из приложения:

System.exit(0);

Я откуда-то получил код приложения фонарика. Он использовал System.exit(0), чтобы закрыть приложение. Я удалил его, зная, что это не очень хорошая практика. Затем я начал получать эти ошибки. Я попробовал решение принятого ответа, но потом начал получать некоторые другие ошибки. Поэтому вместо их решения я просто вернул эту строку System.exit(0). И он начал нормально работать. Я знаю, что это не очень хорошо, но для небольшого приложения для фонарей вы можете попробовать это быстрое решение.

0
ответ дан Ashish Tanna 25 August 2018 в 17:09
поделиться

Привет, я надеюсь, что вы имеете дело с факельным видом приложения или чем-то, связанным с флеш-памятью, и было много обсуждений по этому поводу раньше, и вот несколько полезных ссылок и руководств для достижения ваших потребностей, пожалуйста, пройдите через них, надеюсь, они могут помочь вы

Как включить программную вспышку камеры в Android?

http://www.androidhive.info/2013/04/ android-development-flashlight-application /

http://www.compiletimeerror.com/2013/08/how-to-turn-onoff-camera-led-flashlight. html # .U4WH5Xbc3o4

http://android.programmerguru.com/android-flashlight-example/

2
ответ дан Community 25 August 2018 в 17:09
поделиться

, если вы попытаетесь открыть камеру с помощью идентификатора камеры, который не существует, вы получите ту же самую ошибку (java.lang.RuntimeException: Fail to Connect to camera service)

посмотрите на свой код на этот блок

camera.setParameters(parameters);
camera.stopPreview();
camera.release();
camera = null;

Вызовите release(), чтобы освободить камеру для использования другими приложениями. Приложения должны немедленно отпустить камеру в onPause() (и снова открыть () в onResume().

. В приведенном выше коде сразу после выпуска вы помещаете нуль в камеру

4
ответ дан Fustigador 25 August 2018 в 17:09
поделиться

Я также видел эту ошибку:

java.lang.RuntimeException: Не удалось подключиться к службе камеры

, экспериментируя с приложением для фонарика. Оказывается, я был немного неряшлив с моими разрешениями и скопировал их в тело блока приложения в файле manifest.xml. Поэтому вам действительно нужно подчиняться синтаксису, как описано в:

http://developer.android.com/guide/topics/manifest/manifest-element.html

В противном случае приложение будет терпеть неудачу при сбое подключения к службе на вызове Camera.open (). Он должен выглядеть так, основываясь на ваших разрешениях на вопрос:

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

<application

Убедитесь, что ваше разрешение и список функций содержатся только в разделе манифеста и не захоронены в разделе приложения!

22
ответ дан Jim Andreas 25 August 2018 в 17:09
поделиться

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

1
ответ дан Keval Patel 25 August 2018 в 17:09
поделиться

В моем андроид-проекте есть такая же проблема. Это моя ошибка Logcat


03-29 19: 26: 04.194 224-608 /? V / EmulatedCamera_BaseCamera: getCameraInfo 03-29 19: 26: 04.196 224-224 /? I / CameraService: CameraService :: connect call (PID -1 «com.proitzen.staffapp», ID камеры 1) для версии HAL по умолчанию и Camera API версии 1 03-29 19: 26: 04.196 224-224 /? W / ServiceManager: Ошибка разрешения: android.permission.CAMERA от uid = 10067 pid = 1776 03-29 19: 26: 04.196 224-224 /? E / CameraService: Разрешение: нельзя использовать камеру pid = 1776, uid = 10067 03-29 19: 26: 04.196 1776-1776 / com.proitzen.staffapp W / CameraBase: Произошла ошибка при подключении к камере 1: Сервис недоступен 03-29 19: 26: 04.200 1776-1776 / com.proitzen.staffapp D / AndroidRuntime: Завершение работы VM


Ни один из вышеперечисленных решений не работал для меня. Мое приложение для Android отработало на физических устройствах Android и дало указанную выше ошибку только в Genymotion.

Решение: запустите настройки эмулятора Genumotion -> Приложения ---> выберите приложение -> Разрешения -> включить камера и микрофон и память.

0
ответ дан lais 25 August 2018 в 17:09
поделиться

Если весь ваш код в порядке, вы должны проверить, есть ли какое-либо другое приложение, использующее вашу камеру. Затем вы должны закрыть другое приложение, которое в настоящее время использует вашу камеру.

0
ответ дан MarsPeople 25 August 2018 в 17:09
поделиться

Если ваша версия os 6.0 или более поздняя версия попробуйте это, надеюсь, что это поможет.

public class RequestUserPermission {

private Activity activity;
// Storage Permissions
private static final int REQUEST_EXTERNAL_STORAGE = 1;
private static String[] PERMISSIONS_STORAGE = {
        Manifest.permission.READ_EXTERNAL_STORAGE,
        Manifest.permission.WRITE_EXTERNAL_STORAGE,
        Manifest.permission.CAMERA
};

public RequestUserPermission(Activity activity) {
    this.activity = activity;
}

public  void verifyStoragePermissions() {
    // Check if we have write permission
    int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);

    if (permission != PackageManager.PERMISSION_GRANTED) {
        // We don't have permission so prompt the user
        ActivityCompat.requestPermissions(
                activity,
                PERMISSIONS_STORAGE,
                REQUEST_EXTERNAL_STORAGE
        );
    }
}
}


**//CALL FROM YOUR ACTIVITY**
 RequestUserPermission requestUserPermission = new RequestUserPermission(this);
    requestUserPermission.verifyStoragePermissions();
7
ответ дан Mohammad nabil 25 August 2018 в 17:09
поделиться

У меня была такая же проблема, что ни один из ответов здесь не был решен, поэтому, после его решения, я добавляю свой способ решения проблемы. Это относится к новым версиям Android, поддерживающим настройку разрешений для каждого приложения (начиная с Marshmallow, 6.0). Разрешение на камеру может быть отключено и должно быть включено из настроек приложения. Настройки -> Приложения -> [Ваше приложение] -> Разрешения

Подробнее об этом здесь: http://developer.android.com/training/permissions/requesting.html

82
ответ дан sam 25 August 2018 в 17:09
поделиться

После того, как вы вернулись с камеры, вам нужно stopPreview() и release(), чтобы другое приложение могло получить к нему доступ. Сделайте класс «Камера» статичным и назовите его как null в onPause(). Это разрешает мою проблему.

Попробуйте:

 public class CameraPhotoCapture extends Activity{
    static Camera mcamera = null;
    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        if (mcamera != null) {
            mcamera.stopPreview();
            mcamera.release();
            mcamera = null;
            Log.d(DEBUG_TAG, "releaseCamera -- done");
        }
        super.onPause();
    }

    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        if (mcamera != null) {

            Camera.open();
            Log.d(DEBUG_TAG, "openCamera -- done");
        }
        super.onResume();
    }
}
0
ответ дан Unheilig 25 August 2018 в 17:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: