2010-05-08 4 views
1

나는 Motorola Droid를위한 앱을 만들었는데, 자동으로 전화기의 위치로 서버를 업데이트해야한다. 사용자가 주 활동 화면에서 특정 작업을 수행하면 알람이 설정되어 서비스를 사용하여 주기적으로 사용자의 위치를 ​​업데이트합니다. 사용자가 다른 작업을 완료하면 경보가 명시 적으로 중지됩니다.획득 한 위치를 텍스트보기로 설정 : 유지 보수 방법?

중요한 것은 두 번째 텍스트 뷰 필드에 처음 획득 한 위도/경도를 배치해야하는 주 활동의 onCreate() 메소드 내에 위치 관리자를 설정했습니다. 매니 페스트가 거칠고 괜찮은 좌표를 얻기 위해 설정되었지만 minTime 및 minDistance가 0으로 설정된 requestLocationUpdates (String provider, long minTime, float minDistance, LocationListener listener)을 사용하고 있는데 화면에 좌표가 표시되지 않습니다. 그것으로, 나는 서버에 어떤 위치도 기록하지 않을 것이다.

예제 코드를 사용하여 텍스트 뷰를 시드하면 서버에 잘 기록됩니다. 나는 IDE를 실행할 수있는 컴퓨터가 아니기 때문에 현재 코드를 가지고 있지 않지만 이것에 대한 도움이 필사적이다.

또 다른 한 가지는 사용자가 수동으로 "데이터 보내기"를 클릭하기 전에 기본 활동 화면에서 사진 앱을 호출한다는 것입니다. 이 위치 수집을 수행하기 위해 주 활동의 onResume() 방법을 재정의해야 할 수도 있습니다. 도와주세요, 고마워요.

마크.

답변

0

코드가없는이 복합체의 경우 사용자를 도울 수 없습니다.

어둠 속에서 총 찔러서 AlarmManager 알람과 관련하여 requestLocationUpdates()을 사용하려고 시도하고 서비스하기가 어렵습니다. 예를 들어, 서비스가 IntentService이고 위치 업데이트를 등록하는 경우 가장 좋은 시나리오에서는 실패하고 최악의 경우에는 체와 같은 메모리가 누출됩니다. 또한 장치가 다시 잠자기 상태로 돌아 가기를 원할 수 있기 때문에 위치 픽스를 기다리는 동안 장치가 깨어 있는지 확인해야합니다.

TextViews이 무엇을 위해서나 어떤 서버와 관련이 있는지 또는 onResume()과 관련이 있는지 또는 "사진 앱"과 관련이 있는지 알 수 없습니다. .

0

감사합니다. CommsWare. 주석 필드의 공간 제한으로 인해이 방법으로 응답합니다.

사용자는 픽업 할 항목의 사진을 찍어 서버로 보내야합니다. 이 작업이 완료되면 서버는 폰이 주기적으로 위치를 전송할 수 있도록 폴링주기를 되돌려 보냅니다. 획득 한 위도/경도 (아래 참조)를 표시하기 위해 textViews을 설정했지만이 부분은 2 박 전까지 작동하지 않았습니다. 그것은 내가 조금 더 참을성이 있고 전화가 위치를 얻는 데 시간을들이는 것을 마침내 끝내 었습니다. 나는 문제가 그때 내가 전화가 위치 수정을 acuire하는 것을 허용하지 않고 있었다라고 생각했다. 그래서 그것은 일하지 않고 있었다. 문제는 당신이 말한 것에 근거하여 정기적 인 업데이트가 작동하지 않을 수도 있고, 위치 픽스 (fix)를 받기 전에 제가 완전히 맑은 하늘 아래서 약 2 분 동안 서 있었다는 사실에 근거하여 문제가 남아 있습니다. 여기

코드의 일부의 스냅 샷 (이 부분은 첫 번째 위치 수정을 얻을 수있는 주요 활동의에서 onCreate 재정에)입니다 :

`LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 
      0, new LocationListener() { 
       public void onStatusChanged(String provider, int status, 
         Bundle extras) { 
        // called when the provider status changes. Possible 
        // status: OUT_OF_SERVICE, TEMPORARILY_UNAVAILABLE or 
        // AVAILABLE. 
       } 

       public void onProviderEnabled(String provider) { 
        // called when the provider is enabled by the user 
       } 

       public void onProviderDisabled(String provider) { 
        // called when the provider is disabled by the user, if 
        // it's already disabled, it's called immediately after 
        // requestLocationUpdates 
       } 

       public void onLocationChanged(Location location) { 
        double latitute = location.getLatitude(); 
        double longitude = location.getLongitude(); 
        tv5.setText(""+latitute); 
        tv6.setText(""+longitude); 
       } 
      }); 
다음

`

는 SOAP 요청의 일부이며 응답 처리 메커니즘.
`// 폴링 기간을 초 단위로 가져옵니다. String [] getPollNumber; getPollNumber = resultParams [2] .split (";");

  //Set up the intent to be passed to the tracking service. 
      Intent updateLocation = new Intent (this,TrackUser.class); 
      PendingIntent pendingIntent = PendingIntent.getService(PickUp.this, 0, updateLocation, 0); 

      //Set up the alarm manager to be used to periodically send updates. 
      AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 

      //If instruction = 1, start tracking the user. 
      if(instruction == 1) 
      {     
       //Start tracking service on phone. 
       pollPeriod = Integer.parseInt(getPollNumber[0]); 
       alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (pollPeriod*1000), pollPeriod*1000, pendingIntent); 
      } 
      else 
      { 
       if(instruction == 0) 
       { 
        //Stop tracking service. 
        stopService(new Intent(this,TrackUser.class)); 
        alarmManager.cancel(pendingIntent); 
       } 
      } 

'추적 서비스 클래스에서

, 나는 단순히 SOAP 객체로 현재 좌표를 패키지 서버를 업데이트의 ONSTART() 오버라이드에서 호출하는 방법을 사용합니다. 나는 GPS가 당신이 말한 것처럼 잠들 때 전화가 오면 이러한 업데이트 중에 잠글 시간이 충분하지 않을 수도 있다고 걱정하고 있습니다. 서비스가 시작될 때 일종의 타이머가 있어야하는지 (아마도 requestLocationUpdates의 minTime 설정일까요?) 전화가 약 3 분 동안 깨어서 수정이 들어올 수 있을지 궁금합니다. 이 코드 스 니펫이 도움이되는지 알려 주시고, 위치 업데이트 아이디어가 가능하면 알려 주시기 바랍니다.