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;// 테스트를 위해 0 하나 뺌
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
교통 사고시 흔들림과 속도 변화를 잡아서
자동으로 구조 메세지 보내는 어플을 .
졸업 작품으로 내려고 준비중인 생초보 학생입니다.
여러 블로그 글과 오픈소스 그리고 예제를 읽어가며 만들어 보았는대
List<Address> addresses = gcK.getFromLocation(latitude,
longitude, 1);
에서 시스템 에러가 떠버립니다.@_@;;
at com.example.nam.run.onSensorChanged(run.java:160
개발자님들 도와주세요!
이전에 초보개발자ㅠ님께서 도와주셨는대 제가 답글을 늦게 올린 것 때문에
초보개발자ㅠ님의 답글이 늦으시는 것 같으셔서 이렇게 따로 올립니다.
양해부탁드립니다.