Виртуальный гироскоп в смартфоне Huawei P Smart 2019? - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть Huawei P Smart 2019 смартфон.Большинство веб-сайтов со спецификациями (включая официальный веб-сайт Huawei) говорят, что в этой модели нет гироскопа .

consumer.huawei.com

www.gsmarena.com

www.phonearena.com

Но я протестировал Huawei P Smart 2019 с помощью приложения Sensor Fusion.Это приложение обнаруживает датчик гироскопа и показывает, как оно работает.

В чем проблема?Почему даже производитель говорит, что нет датчика гироскопа в Huawei P Smart 2019, хотя датчик явно существует там?

Может быть, это virtual gyroscope?

package org.hitlabnz.sensor_fusion_demo;

import ...

public class SensorSelectionActivity extends FragmentActivity {
    SectionsPagerAdapter mSectionsPagerAdapter;
    ViewPager mViewPager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sensor_selection);

        mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());

        mViewPager = (ViewPager) findViewById(R.id.pager);
        mViewPager.setAdapter(mSectionsPagerAdapter);

        // Check if device has a hardware gyroscope
        SensorChecker checker = new HardwareChecker((SensorManager) getSystemService(SENSOR_SERVICE));
        if(!checker.IsGyroscopeAvailable()) {

            // If a gyroscope is unavailable, display a warning
            displayHardwareMissingWarning();
        }
    }

    private void displayHardwareMissingWarning() {
        AlertDialog ad = new AlertDialog.Builder(this).create();  
        ad.setCancelable(false);   
        ad.setTitle(getResources().getString(R.string.gyroscope_missing)); 
        ad.setMessage(getResources().getString(R.string.gyroscope_missing_message));

        ad.setButton(DialogInterface.BUTTON_NEUTRAL, getResources().getString(R.string.OK), new DialogInterface.OnClickListener() {  
            @Override  
            public void onClick(DialogInterface dialog, int which) {   
                dialog.dismiss();                      
            }  
        });  
        ad.show();  
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.sensor_selection, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.action_about:
            Intent intent = new Intent(this, AboutActivity.class);
            startActivity(intent);
            return true;
        }
        return false;
    }

    public class SectionsPagerAdapter extends FragmentPagerAdapter {
        public SectionsPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            Fragment fragment = new OrientationVisualisationFragment();
            Bundle args = new Bundle();
            args.putInt(OrientationVisualisationFragment.ARG_SECTION_NUMBER, position + 1);
            fragment.setArguments(args);
            return fragment;
        }

        @Override
        public int getCount() {
            return 6;
        }

        @Override
        public CharSequence getPageTitle(int position) {
            Locale l = Locale.getDefault();
            switch (position) {
            case 0:
                return getString(R.string.title_section1).toUpperCase(l);
            case 1:
                return getString(R.string.title_section2).toUpperCase(l);
            case 2:
                return getString(R.string.title_section3).toUpperCase(l);
            case 3:
                return getString(R.string.title_section4).toUpperCase(l);
            case 4:
                return getString(R.string.title_section5).toUpperCase(l);
            case 5:
                return getString(R.string.title_section6).toUpperCase(l);
            }
            return null;
        }
    }
}

Гироскоп отлично работает по осям x, y и z.

enter image description here

Мне нужен гироскоп и акселерометр для ARCore.

1 Ответ

1 голос
/ 03 апреля 2019

Небольшое объяснение о том, как это работает: https://android.gadgethacks.com/how-to/use-google-cardboard-if-your-phone-doesnt-have-gyroscope-0172650/

С помощью датчика компаса и акселерометра на вашем смартфоне вы можете создать виртуальный гироскоп.Вам нужно взять данные с компаса и акселерометра, выполнить много работы и отсортировать их, но вы можете виртуально управлять функциональностью гироскопа с помощью этого: -)

...