알람 매니저를 이용하여
mapsend 에서 알람매니저 이용하여 AlarmService 를 호출 하였습니다
문제는
public class AlarmService extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent)
{
Intent startIntent = new Intent(context, Gps.class);
context.startService(startIntent);
}
}
여기서 Gps 라는 액티브를 호출하고 싶습니다 ( 자기 gps 위치값을 매 정한 시간마다 출력 할수있도록 )
혹시나 검색을 통해 저 코드를 써봣으나..
04-13 19:04:18.713: WARN/ActivityManager(61): Unable to start service Intent { cmp=com.MapSend/.Gps }: not found
04-13 19:04:23.732: WARN/ActivityManager(61): Unable to start service Intent { cmp=com.MapSend/.Gps }: not found
04-13 19:04:28.712: WARN/ActivityManager(61): Unable to start service Intent { cmp=com.MapSend/.Gps }: not found
04-13 19:04:33.713: WARN/ActivityManager(61): Unable to start service Intent { cmp=com.MapSend/.Gps }: not found
04-13 19:04:38.722: WARN/ActivityManager(61): Unable to start service Intent { cmp=com.MapSend/.Gps }: not found
04-13 19:04:43.743: WARN/ActivityManager(61): Unable to start service Intent { cmp=com.MapSend/.Gps }: not found
이런 코드만 뜨더군요 ^^;... 어떻게 해야 하는지 답변 꼭! 좀 부탁드리겠습니다.. 아참
gps 코드는 이렇습니다.
public class Gps extends Activity
{
private LocationManager lm;
private LocationListener locListenD;
// public static Location lastLocation; // 이전 경로 지역변수
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// SharedPreferences prefs = getSharedPreferences("PrefName", MODE_PRIVATE); //데이터 저장,불러오기 하기위한 권한
lm =(LocationManager)getSystemService(Context.LOCATION_SERVICE);
Location ico = lm.getLastKnownLocation("gps");
///////////////////////////////////////////////////////// gps 값 가져오는거
if(ico!=null)
{
double lat = ico.getLatitude();
double lng = ico.getLongitude();
// float lat1 = (float)lat; //데이터 저장을위한 변형
// float lng1 = (float)lng;
// SharedPreferences.Editor ed = prefs.edit();
// ed.putFloat("lat", lat1);
// ed.putFloat("lng", lng1);
// ed.commit();
Toast.makeText(Gps.this, "위도:"+lat+"\n경도:"+lng,Toast.LENGTH_LONG).show();//화면표시
locListenD = new DispLocListener(); //gps 위치 가져오는것
lm.requestLocationUpdates("gps", 30000L, 10.0f, locListenD);
}
//////////////////////////////////////////////////////
//lastLocation = ico;
// double lastlat = lastLocation.getLatitude();
// double lastlng = lastLocation.getLongitude();
// float lastlat1 = (float)lastlat; //데이터 저장을위한 변형
// float lastlng1 = (float)lastlng;
// Toast.makeText(Gps.this, "위도:"+lastlat1+"\n경도:"+lastlng1,Toast.LENGTH_LONG).show();//화면표시
//좌표 저장 비교하기위해
// SharedPreferences.Editor ed = prefs.edit();
// ed.putFloat("lastlat", lastlat1);
// ed.putFloat("lastlng", lastlng1);
// ed.commit();
//float lastlat2 = prefs.getFloat("lastlat", ""); //불러옴
}
///////////////////////////////////////////////////////////////////////////////////// 정보 위치 업뎃
private class DispLocListener implements LocationListener
{
public void onLocationChanged(Location location) {
}
public void onProviderDisabled(String provider) {
}
public void onProviderEnabled(String provider) {
}
public void onStatusChanged(String provider, int status, Bundle extras) {
}
}
}
mapsend.java
@Override
public void onClick(View v)
{
int timechang = Integer.parseInt(text.getText().toString());// 변수에 저장
Intent intent = new Intent(MapSend.this, AlarmService.class); //인텐트 호출
PendingIntent sender = PendingIntent.getBroadcast(MapSend.this, 0, intent, 0);
long firstTime = SystemClock.elapsedRealtime();
firstTime += timechang*1000; //시간설정
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime, timechang*1000, sender); // 시간 설정
Toast.makeText(MapSend.this, "변경 완료"+timechang+"초",Toast.LENGTH_SHORT).show();//표시
}
});
AlarmService .java
public class AlarmService extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent)
{
Intent startIntent = new Intent(context, Gps.class);
context.startService(startIntent);
}
}