我有Huawei P Smart 2019
智能手机。大多数具有规格的网站(包括华为官方网站)都说这种型号没有没有陀螺仪。
但是我使用Sensor Fusion应用测试了Huawei P Smart 2019
。该应用程序可检测陀螺仪传感器并显示其工作原理。
有什么问题?为什么甚至制造商都说
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轴工作。
我需要一个用于ARCore的陀螺仪和加速度计。
答案 0 :(得分:1)
有关其工作原理的一些解释:https://android.gadgethacks.com/how-to/use-google-cardboard-if-your-phone-doesnt-have-gyroscope-0172650/
使用智能手机上的指南针和加速传感器,您可以制作虚拟陀螺仪。您需要从指南针和加速器中获取数据并进行大量工作和排序,但是您可以使用:-)
来虚拟处理陀螺仪的功能。