0

許可例外で Vuforia の初期化に失敗してプログラムを実行した後、アプリがクラッシュする

アンドロイド版は<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />

デバイス 4.1.1 (API レベル 16) でフロント カメラのみをテストしています。

マニフェスト ファイルに含まれる権限:

<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 です。

私が逃したものがわからない。

含まれるライブラリは armae​​bi-v7a/libVuforia.so、android-support-v4、jpct_ae、Vuforia です。

4

1 に答える 1

1

私は同じ問題に直面しました。新しいバージョンでは、ユーザーが明示的にカメラのアクセス許可を与える必要があるため、例にコンパイル済みの SdK バージョン 22 が付属していることがわかります。私のプロジェクトは、Android アプリケーションにコードを追加することで API 25 を使用しています。私の場合、ユーザーが FloatingActionButton をクリックしたときに vuforia アクティビティを開く前に、カメラの許可を求めました。

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 は、事前のサンプルに含まれている vforia の AR を使用するアクティビティです。この場合、ユーザーの回答を確認する必要があるため、onRequestPermissionsResult をリッスンする必要があります。

@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 で、回答が肯定的かどうかを確認し、そうであればアクティビティを開きます。

それがあなたにとってもうまくいくことを願っています。

于 2017-04-18T19:14:31.970 に答える