Титановая камера-ускоритель не обнаружена на устройствах Samsung серии S или Google Pixel. - PullRequest
0 голосов
/ 28 августа 2018

Я занимаюсь разработкой мобильного приложения с использованием Appcelerator Titanium Alloy. Приведенный ниже код открывает камеру, позволяет пользователю сделать снимок и успешно прикрепляет его к шаблону электронной почты на всех устройствах iOS и на большинстве устройств Android, с которыми я смог протестировать, включая Motorola, LG, Panasonic, Samsung ( не s-серия отлично работает). Когда я пытаюсь открыть камеру на определенных устройствах (пока только Samsung S7 и Google Pixel, но мой доступ к устройствам ограничен), я получаю сообщение об ошибке:

[ОШИБКА]: TiMedia: (KrollRuntimeThread) [12968,135705] Не удалось создать каталог внешнего хранилища.

Я вижу эту ошибку в Appcelerator Studio и на устройстве вижу всплывающее сообщение «Пожалуйста, запустите этот тест на устройстве», что означает, что оно должно возвращать true в строке if (error.code == Titanium.Media.NO_CAMERA) ниже.

На данный момент я уже запросил разрешения для внешнего хранилища и камеры. Я не могу понять, почему это происходит только на определенных устройствах, и это не похоже на конкретную версию ОС Android. Любая помощь будет оценена.

var takePic = Ti.UI.createButton({
        width : 127,
        height : 42,
        bottom : 50,
        left : 8,
        title : 'Take a picture',
        color : "#fff",
        backgroundColor : "#555555",
        borderColor : "#FFFFFF",
        borderRadius : "10px",
        borderWidth : "1px"

    });

takePic.addEventListener('click', function(e) {
        var win = Titanium.UI.createWindow({//Open Camera

        });

        Titanium.Media.showCamera({
            success : function(event) {
                if (event.mediaType == Ti.Media.MEDIA_TYPE_PHOTO) {

                    win = Titanium.UI.currentWindow;

                    if (osName == "android") {
                        var img_view = Titanium.UI.createImageView({
                            height : '100%',
                            width : '100%',
                        });

                        win.add(img_view);
                    }
                    try {
                        picURL = event.media;
                        picRaw = event.media;
                        pictureSet = true;
                        $.videoButton.enabled = false;
                        $.videoButton.backgroundColor = "#DDDDDD";
                        $.savePic.show();
                        format = "Picture";
                    } catch(e) {
                        alert("An Error:" + e.message);
                    }

                } else {
                    var alert = createErrorAlert({
                        text : "An error occured getting the media. Please check file size and format and try again."
                    });
                    $.yesLatLon.add(alert);
                    alert.show();
                }

            },
            cancel : function() {
                //called when user cancels taking a picture

            },
            error : function(error) {
                //called when there's an error
                var a = Titanium.UI.createAlertDialog({
                    title : 'Camera'
                });
                if (error.code == Titanium.Media.NO_CAMERA) {
                    a.setMessage('Please run this test on device');
                } else {
                    a.setMessage('Unexpected error: ' + error.code);
                }
                a.show();
            },
            saveToPhotoGallery : true,
            allowEditing : false,
            autohide : true, //Important!
            mediaTypes : [Ti.Media.MEDIA_TYPE_PHOTO]
        });
        alert.hide();
    });
...