public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
long currentTime = System.currentTimeMillis();
long gabOfTime = (currentTime - lastTime);
if (gabOfTime > 100) {
LocationManager locationManager;
String context = Context.LOCATION_SERVICE;
locationManager = (LocationManager) getSystemService(context);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_COARSE);// 정확도
criteria.setPowerRequirement(Criteria.POWER_LOW); // 전원 소비량
criteria.setAltitudeRequired(true); // 고도 사용여부
criteria.setBearingRequired(true); //방향
criteria.setSpeedRequired(true); // 속도
criteria.setCostAllowed(true); // 금전적비용
String provider = locationManager.getBestProvider(criteria,true);
Location location = locationManager.getLastKnownLocation(provider);
float Speed = location.getSpeed();
SpeedMHK = Speed*10000;
lastTime = currentTime;
if (SpeedMHK > 1) {
x = event.values[SensorManager.DATA_X];
y = event.values[SensorManager.DATA_Y];
z = event.values[SensorManager.DATA_Z];
shake = Math.abs(x + y + z - lastX - lastY - lastZ) / gabOfTime * 10000;
if (shake > SHAKE_THRESHOLD){
double latitude = location.getLatitude(); // 위도
double longitude = location.getLongitude(); // 경도
Geocoder gcK = new Geocoder(getApplicationContext(),Locale.KOREA);
try{
List<Address> addresses = gcK.getFromLocation(latitude,longitude, 1);
StringBuilder sb = new StringBuilder();
if (addresses.size() > 0) {
for (Address addr : addresses) {
sb.append(addr.getMaxAddressLineIndex()).insert(0, "-살려주세요-\n");
for (int i = 0; i < addr.getMaxAddressLineIndex(); i++)
sb.append(addr.getAddressLine(i)).append("<< \n\n");
}
속도가 일정 수준이면 흔들림을 잡는 코드를 만들려고 했습니다. 만
실행 시켜보니 로그켓에 에러는 안뜨는대 실행 속도 잡는 화면에서 넘어가질 않고 반응도 없내요.;;;
고수님들 한 수 부탁드립니다.