W/System.err(
9646
): at android.os.Handler.dispatchMessage(Handler.java:
99
)
W/System.err(
9646
): at android.os.Looper.loop(Looper.java:
137
)
W/System.err(
9646
): at android.app.ActivityThread.main(ActivityThread.java:
4921
)
W/System.err(
9646
): at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err(
9646
): at java.lang.reflect.Method.invoke(Method.java:
511
)
W/System.err(
9646
): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:
1038
)
W/System.err(
9646
): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:
805
)
W/System.err(
9646
): at dalvik.system.NativeStart.main(Native Method)
W/System.err(
9646
): java.io.IOException: Service not Available
W/System.err(
9646
): at android.location.Geocoder.getFromLocation(Geocoder.java:
136
)
W/System.err(
9646
): at com.example.nam.run.onSensorChanged(run.java:
160
)
W/System.err(
9646
): at android.hardware.SystemSensorManager
$ListenerDelegate$
1
.handleMessage(SystemSensorManager.java:
250
)
W/System.err(
9646
): at android.os.Handler.dispatchMessage(Handler.java:
99
)
W/System.err(
9646
): at android.os.Looper.loop(Looper.java:
137
)
W/System.err(
9646
): at android.app.ActivityThread.main(ActivityThread.java:
4921
)
W/System.err(
9646
): at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err(
9646
): at java.lang.reflect.Method.invoke(Method.java:
511
)
W/System.err(
9646
): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:
1038
)
W/System.err(
9646
): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:
805
)
W/System.err(
9646
): at dalvik.system.NativeStart.main(Native Method)
E/SpannableStringBuilder(
9646
): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
E/SpannableStringBuilder(
9646
): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
-------------------------------------------------------------------------
public
class
run
extends
Activity
implements
SensorEventListener {
private
long
lastTime;
private
float
speed;
private
float
lastX;
private
float
lastY;
private
float
x, y;
private
static
final
int
SHAKE_THRESHOLD =
150
;
private
static
final
int
DATA_X = SensorManager.AXIS_X;
private
static
final
int
DATA_Y = SensorManager.AXIS_Y;
private
static
boolean
chek;
public
String text;
private
SensorManager sensorManager;
private
Sensor accelerormeterSensor;
@SuppressLint
(
"NewApi"
)
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.safe);
SharedPreferences pref = getSharedPreferences(
"pref"
,
Activity.MODE_PRIVATE);
EditText edit1 = (EditText)
this
.findViewById(R.id.text1);
CheckBox check1 = (CheckBox) findViewById(R.id.CheckBox1);
text = pref.getString(
"editText"
,
""
);
chek = pref.getBoolean(
"check1"
,
false
);
if
(text.isEmpty()) {
Toast.makeText(getBaseContext(),
"전화번호가 등록되어있지않습니다"
,
Toast.LENGTH_SHORT).show();
finish();
}
if
(!(chek)) {
Toast.makeText(getBaseContext(),
"설정되어있지않습니다"
, Toast.LENGTH_SHORT)
.show();
finish();
}
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
accelerormeterSensor = sensorManager
.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
}
@Override
public
void
onStart() {
super
.onStart();
if
(accelerormeterSensor !=
null
)
sensorManager.registerListener(
this
, accelerormeterSensor,
SensorManager.SENSOR_DELAY_GAME);
}
@Override
public
void
onStop() {
super
.onStop();
if
(sensorManager !=
null
)
sensorManager.unregisterListener(
this
);
finish();
}
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
) {
lastTime = currentTime;
x = event.values[
0
];
y = event.values[
1
];
speed = Math.abs(x + y - lastX - lastY ) / gabOfTime
*
10000
;
if
(speed > SHAKE_THRESHOLD) {
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(
false
);
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);
float
Bearing = location.getBearing();
float
Speed = location.getSpeed();
}
else
if
(speed <
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(
false
);
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);
float
Bearing = location.getBearing();
float
Speed = location.getSpeed();
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
.getM