E/SensorManager(
9503
): thread start
E/SensorManager(
9503
): =======>>> Sensor Thread Running <<<========
D/memalloc(
9503
): ion:
Mapped buffer base:
0x53812000
size:
4096000
offset:
0
fd:
71
D/memalloc(
9503
): ion:
Mapped buffer base:
0x542ca000
size:
4096000
offset:
0
fd:
77
W/IInputConnectionWrapper(
9503
):
getSelectedText on inactive InputConnection
D/memalloc(
9503
): ion: Unmapping buffer base:
0x53ee2000
size:
4096000
D/memalloc(
9503
): ion: Unmapping buffer base:
0x53812000
size:
4096000
W/IInputConnectionWrapper(
9503
): setComposingText on inactive InputConnection
W/dalvikvm(
9503
):
threadid=
1
: thread exiting with uncaught exception (group=
0x40c1b1f8
)
E/AndroidRuntime(
9503
): FATAL EXCEPTION: main
E/AndroidRuntime(
9503
): java.lang.NullPointerException
E/AndroidRuntime(
9503
):
at com.example.nam.run.onSensorChanged(run.java:
133
)
E/AndroidRuntime(
9503
):
at android.hardware.SensorManager$ListenerDelegate$
1
.handleMessage(SensorManager.java:
635
)
E/AndroidRuntime(
9503
):
at android.os.Handler.dispatchMessage(Handler.java:
99
)
E/AndroidRuntime(
9503
):at android.os.Looper.loop(Looper.java:
137
)
E/AndroidRuntime(
9503
):
at android.app.ActivityThread.main(ActivityThread.java:
4512
)
E/AndroidRuntime(
9503
):
at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(
9503
):
at java.lang.reflect.Method.invoke(Method.java:
511
)
E/AndroidRuntime(
9503
):
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:
794
)
E/AndroidRuntime(
9503
):
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:
561
)
E/AndroidRuntime(
9503
):
at dalvik.system.NativeStart.main(Native Method)
public
void
onSensorChanged(SensorEvent event) {
if
(event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
long
currentTime = System.currentTimeMillis();
long
gabOfTime = (currentTime - lastTime);
if
(gabOfTime >
1
) {
lastTime = currentTime;
x = event.values[SensorManager.DATA_X];
y = event.values[SensorManager.DATA_Y];
z = event.values[SensorManager.DATA_Z];
speeds = Math.abs(x + y + z - lastX - lastY - lastZ) / gabOfTime
*
1
;
if
(speeds > SHAKE_THRESHOLD) {
LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
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);
double
latitude = location.getLatitude();
double
longitude = location.getLongitude();
Geocoder gcK =
new
Geocoder(getApplicationContext(),Locale.KOREA);
if
(startTime == -
1
) {startTime = location.getTime();
}
float
distance[] =
new
float
[
1
];
<span style=
"color:#ffff00;"
><span style=
"font-size:18px;"
><strong>Location.distanceBetween(beforeLocation.getLatitude(), beforeLocation.getLongitude(),
location.getLatitude(), location.getLongitude(), distance);</strong></span></span>
long
delay = location.getTime() - startTime;
double
speed = distance[
0
]/delay;
double
speedKMH = speed *
3600
;
beforeLocation = location;
if
(speedKMH >
1
) {
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"
);
}
Address address = addresses.get(
0
);
sb.delete(
7
,
8
);
sb.append(address.getCountryName()).append(
" "
);
sb.append(
"경상북도"
).append(
" "
);
sb.append(address.getLocality()).append(
" "
);
sb.append(address.getThoroughfare()).append(
" "
);
sb.append(address.getFeatureName()).append(
"\n"
);
Toast.makeText(getBaseContext(), sb.toString(),
Toast.LENGTH_SHORT).show();
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(text,
null
, sb.toString()
+
"에서 사고발생. 구조를 요청합니다. "
,
null
,
null
);
setContentView(R.layout.not_safe);
}
}