là có thể biết hướng điện thoại đang trỏ đến khi xem trước máy ảnh hoặc bạn có để điện thoại phẳng như la bàn hay không.Cảm biến hướng Android
Cảm ơn
là có thể biết hướng điện thoại đang trỏ đến khi xem trước máy ảnh hoặc bạn có để điện thoại phẳng như la bàn hay không.Cảm biến hướng Android
Cảm ơn
Có - Các mã sau đây nên làm công việc
public class Test extends Activity implements SensorEventListener{
public static float swRoll;
public static float swPitch;
public static float swAzimuth;
public static SensorManager mSensorManager;
public static Sensor accelerometer;
public static Sensor magnetometer;
public static float[] mAccelerometer = null;
public static float[] mGeomagnetic = null;
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
@Override
public void onSensorChanged(SensorEvent event) {
// onSensorChanged gets called for each sensor so we have to remember the values
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
mAccelerometer = event.values;
}
if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD) {
mGeomagnetic = event.values;
}
if (mAccelerometer != null && mGeomagnetic != null) {
float R[] = new float[9];
float I[] = new float[9];
boolean success = SensorManager.getRotationMatrix(R, I, mAccelerometer, mGeomagnetic);
if (success) {
float orientation[] = new float[3];
SensorManager.getOrientation(R, orientation);
// at this point, orientation contains the azimuth(direction), pitch and roll values.
double azimuth = 180 * orientation[0]/Math.PI;
double pitch = 180 * orientation[1]/Math.PI;
double roll = 180 * orientation[2]/Math.PI;
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
accelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
magnetometer = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
}
@Override
protected void onResume() {
super.onResume();
mSensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_GAME);
mSensorManager.registerListener(this, magnetometer, SensorManager.SENSOR_DELAY_GAME);
}
@Override
protected void onPause() {
super.onPause();
mSensorManager.unregisterListener(this, accelerometer);
mSensorManager.unregisterListener(this, magnetometer);
}
}
làm cách nào tôi có thể in hướng trong nhật ký ???? trong đó biến u r nhận được hướng ??? –
@Mitesh Giá trị góc phương vị là giá trị bạn cần tìm. Log.d ("direction", String.valueOf (góc phương vị)) nên thực hiện công việc. – Richard
@Richard :: Cảm ơn bạn :) :) –
Bạn có thể lấy hướng nó chỉ, và vòng quay của điện thoại cùng các cảm biến 3 trục. Vì vậy, bạn có thể làm bất cứ điều gì bạn muốn. – Falmarri