首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >vuforia sdk + android在权限异常下初始化Vuforia失败

vuforia sdk + android在权限异常下初始化Vuforia失败
EN

Stack Overflow用户
提问于 2016-09-08 08:55:39
回答 1查看 2.9K关注 0票数 0

应用程序在运行程序时崩溃,但在权限异常下初始化Vuforia失败

安卓版本是<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />

在设备4.1.1 (api级别16)上只使用前置摄像头进行测试。

清单文件中包含的权限:

代码语言:javascript
复制
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-feature android:glEsVersion="0x00020000" />

SampleApplicationSessionInitVuforiaTask任务中,返回的Vuforia.init()值为-1。

不知道我错过了什么。

包括armaebi-v7a/libVuforia.so,android-support-v4,jpct_ae,Vuforia。

EN

回答 1

Stack Overflow用户

发布于 2017-04-18 19:14:31

我也面临过同样的问题。如果您看到了compiledSdKversion 22的例子,因为在较新的版本中,用户必须显式地授予相机权限。我的项目是通过向我的android应用程序添加一些代码来使用API 25。在我的例子中,当用户循环一个FloatingActionButton时,在打开vuforia活动之前,我请求获得相机许可:

代码语言:javascript
复制
FloatingActionButton flb=(FloatingActionButton)findViewById(R.id.floatingActionButton2);
    flb.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {


            if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {

                ActivityCompat.requestPermissions(MainActivity.this, new String[] { Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE }, 0);
            }
            else
            {
                Intent myIntent = new Intent(MainActivity.this, VideoPlayback.class);
                startActivity(myIntent);
            }

        }
    });

VideoPlayback是使用vuforia的AR的活动,包括在前面的示例中。在这种情况下,您必须侦听onRequestPermissionsResult,因为我们必须检查用户的答案。

代码语言:javascript
复制
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    // Begin monitoring for Aruba Beacon-based Campaign events
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);

    if (requestCode == 0) {
        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED
                && grantResults[1] == PackageManager.PERMISSION_GRANTED) {
            Intent myIntent = new Intent(MainActivity.this, VideoPlayback.class);
            startActivity(myIntent);
        }
    }


}

在onRequestPermissionsResult中,我们检查答案是否为正,如果是,则打开活动。

我希望它也适用于你。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39386595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档