Включение гироскопа

У меня есть веб-просмотр, который открывает сайт с WebGl или CCS3D. На этом сайте есть кнопка, включающая гироскоп.

Если зайти на этот сайт через хром и нажать на эту кнопку, то включается гироскоп. Если запускать сайт через webview в андроид приложении, то при нажатии кнопки гироскопа сайт не крутится, как в хроме.

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

Подключены следующие разрешения:

<uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.VIBRATE"/>
    <uses-feature android:name="android.hardware.sensor.accelerometer" android:required="true" />
    <uses-feature android:name="android.hardware.sensor.gyroscope" android:required="true" />

Код:

public class SecondActivity extends AppCompatActivity  {
    WebView webView;
    final String ulr="http://sfer***.com/hodite/";
    SensorManager sensorManager;
    Sensor sensor;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_second);
        webView=(WebView)findViewById(R.id.web);
        WebSettings webSettings = webView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webSettings.setDomStorageEnabled(true);
        webSettings.setLoadWithOverviewMode(true);
        webSettings.setUseWideViewPort(true);
        webSettings.setBuiltInZoomControls(true);
        webSettings.setDisplayZoomControls(false);
        webSettings.setSupportZoom(true);
        webSettings.setDefaultTextEncodingName("utf-8");
        webSettings.setRenderPriority(WebSettings.RenderPriority.HIGH);
        webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
        webSettings.setAppCacheEnabled(true);
        webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
        webSettings.setEnableSmoothTransition(true);
        //webView.setWebChromeClient(new WebChromeClient());
        webView.loadUrl(ulr);

        /*sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        sensor = sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE);*/


    }

Поддержите меня, пожалуйста.


person shcherbuk    schedule 20.11.2017    source источник


Ответы (1)


Я думаю, что веб-просмотр не поддерживает гироскоп. Вместо использования Webview по умолчанию вы можете попробовать использовать XWalkView. Это будет поддерживать гироскоп. Добавьте приведенный ниже код в build.gradle.

repositories {
//mavenLocal()
maven {
    url 'https://download.01.org/crosswalk/releases/crosswalk/android/maven2'
}}

Добавьте строку ниже в зависимости

compile 'org.xwalk:xwalk_core_library:20.50.533.12'

Добавьте в файл макета:

<org.xwalk.core.XWalkView
    android:id="@+id/xwalkWebView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#000000"/>

Это решит вашу проблему. Всего наилучшего !!.

person Arpit    schedule 23.11.2017
comment
Спасибо, это работает для меня. Но у меня очень большой apk, почему? Мой первый размер 1,5 мб, а мой apk с этой библиотекой 50 мб. - person shcherbuk; 26.11.2017
comment
Библиотека занимает около 45 мб. Вы можете сгенерировать 2 APK, и размер каждого из них будет разделен на 20-20 МБ. Магазин Google Play автоматически определяет, какой apk показывать для какого устройства. Вы можете проверить эту ссылку для получения более подробной информации. - person Arpit; 27.11.2017