2012-11-08 3 views
1

안녕하세요 android가 생겼습니다. 나는 내 위치의 위도 & latitude를 계산하고 정확한 시간 간격으로 & 시간을 업데이트하는 응용 프로그램을 개발합니다.이 응용 프로그램에서 데이터를 가져와 & Google지도에서 위치를 매핑합니다.이 응용 프로그램은 업데이트와 함께 정확하게 작동합니다 그러나 한 가지 문제는 휴대 전화가 잠겨있을 때이 애플리케이션이 작동하지 않는다는 것입니다.다시 열 때마다 응용 프로그램을 다시 시작하고 싶지 않음

  1. 나는 휴대 전화가 꺼져 다음하지 않는 한이 & 때까지 계속 실행 배경 &에서이 응용 프로그램을 실행합니다. 이 응용 프로그램은이 응용 프로그램에서 돌아간 후 응용 프로그램을 다시 열면 업데이트를 시작합니다.
  2. 해당 날짜의 마지막 업데이트 날짜 &을 표시하고자합니다. 응용 프로그램을 다시 시작하지 않음 & 업데이트 날짜가 없습니다 & 현재 개봉 시간부터의 시간입니다. 지속적으로 백그라운드에서 작업하는 것은 & 백그라운드에서 작동하는 활동을 표시합니다.

도와주세요 ... 내가

주요 활동의 내 코드가 여기에있다

...

package com.ETrack; 

public class ETrackActivity extends Activity { 

public void acquire() 

    {   final String TAG = null; 
       PowerManager pm = (PowerManager)getApplicationContext().getSystemService(
       getApplicationContext().POWER_SERVICE); 
       WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG); 
       wl.acquire(); 
       wl.release(); 
    } 


    private static final List<? extends NameValuePair> nameValuePairs = null; 


    /** Called when the activity is first created. */ 
    static TelephonyManager tm; 


    TextView GPS_Long_txtbx; 
    TextView GPS_Lat_txtbx; 
    static TextView last_update_time_txtbx; 
    TextView onfig_txtbx; 
    static String pswd_auth= "13579", server_host="helpdesk.cispl.com"; 
    static String interval = "120"; 
    String Saveinterval = "interval.txt"; 
    String FILENAME3 = "savetime"; 
    String Savetime = "savetime.txt"; 

    Handler h = new Handler(); 
    Runnable run = new Runnable() 

    { 

     @Override 
     public void run() { 

      MyLocation loc = new MyLocation(getBaseContext()); 
      TextView longitude_view = (TextView) findViewById(R.id.GPS_Long_txta); 
        ((TextView) longitude_view) 
        .setText(" " + String.valueOf(loc.gps_lon)); 
      TextView latitude_view = (TextView) findViewById(R.id.GPS_Lat_txta); 
      ((TextView) latitude_view).setText(" " + String.valueOf(loc.gps_lat)); 
      long delaytime =(record * 1000); 
      last_update_time_txtbx = (TextView) findViewById(R.id.last_update_time_txt); 
      last_update_time_txtbx.setText(" " + String.valueOf(java.text.DateFormat.getDateTimeInstance() 
      .format(Calendar.getInstance().getTime()))); 
      tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 
      String response = CallWebService(tm.getDeviceId(), loc.gps_lon, loc.gps_lat); 
      h.postDelayed(this, delaytime); 

     } 
    }; 



    public void Saveinterval(String Saveinterval) { 
     try { 
      File dir = getFilesDir(); 
      File file = new File(dir, Saveinterval); 
      if (file.exists()) 
       file.delete(); 
      FileOutputStream fos = openFileOutput(Saveinterval, 
        Context.MODE_PRIVATE); 
      fos.write(Saveinterval.getBytes()); 
      fos.close(); 
     } catch (Exception ex) { 
      ex.getMessage(); 
     } 
    } 

    public int RestoreRecord0() 
    { 
     try 
     { 

      File dir = getFilesDir(); 
      File file = new File(dir, Saveinterval); 
      if (!file.exists()) { 
       return Integer.parseInt(interval); 
      } 

      FileInputStream fileIS = new FileInputStream(file); 
      BufferedReader buf = new BufferedReader(new InputStreamReader(fileIS)); 
      String readString = new String(); 
      String data = " "; 

      // just reading each line and pass it on the debugger 

      while ((readString = buf.readLine()) != null) 
      { 
       data += readString; 
      } 

      return Integer.parseInt(data); 
     } 

     catch (Exception ex) { 
      ex.getMessage(); 
     } 

     return Integer.parseInt(interval); 
    } 

    int record = RestoreRecord0(); 
    private static int activities = 0; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 




     this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 
     tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 


     this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 

     last_update_time_txtbx = (TextView) findViewById(R.id.last_update_time_txt); 
     last_update_time_txtbx.setText(" "+ String.valueOf(java.text.DateFormat.getDateTimeInstance() 
       .format(Calendar.getInstance().getTime()))); 



     MyLocation loc = new MyLocation(this.getApplicationContext()); 
     TextView longitude_view = (TextView)findViewById(R.id.GPS_Long_txta); 
     ((TextView) longitude_view).setText(" "+String.valueOf(loc.gps_lon)); 
     TextView latitude_view = (TextView)findViewById(R.id.GPS_Lat_txta); 
     ((TextView) latitude_view).setText(" "+String.valueOf(loc.gps_lat)); 



     //refresh_location(GPS_Long_txtbx,GPS_lat_txtbx); 


       final Button btnSkip = (Button) findViewById(R.id.btnRegister); 
       // btnSkip.setTypeface(face); 
       btnSkip.setOnClickListener(new View.OnClickListener() { 
        public void onClick(View v) { 
         // Perform action on click EditText et 


         Intent i = new Intent(ETrackActivity.this, Configuration.class);       
         //i.putExtra("Skip", "true"); 
         // i.putExtra("Location", txtEmail.getText()); 
         startActivity(i); 
         } 
       }); 


    //  last_update_time_txtbx = (TextView)findViewById(R.id.last_update_time_txt); 
    //  last_update_time_txtbx.setText(" "+ String.valueOf(java.text.DateFormat.getDateTimeInstance() 
//   .format(Calendar.getInstance().getTime()))); 



       // in this response variable it contains 
       String response = CallWebService(tm.getDeviceId(), loc.gps_lon, loc.gps_lat); 


       long delaytime =(record * 1000); 
       h.postDelayed(run, delaytime); 


       } 



    // public void refresh_location(View longitude_view, View latitude_view, View last_update_time_txtbx) 
    public void refresh_location(View longitude_view, View latitude_view) 

    { 

     longitude_view = (TextView)findViewById(R.id.GPS_Long_txta); 
     ((TextView) longitude_view).setText(" "+String.valueOf(LocationService.GPS_Long)); 
     latitude_view = (TextView)findViewById(R.id.GPS_Lat_txta); 
     ((TextView) latitude_view).setText(" "+String.valueOf(LocationService.GPS_Lat)); 
//  last_update_time_txtbx = (TextView)findViewById(R.id.last_update_time_txt); 
//  ((TextView) last_update_time_txtbx).setText(""+String.valueOf(java.text.DateFormat.getDateTimeInstance() 
//  .format(Calendar.getInstance().getTime()))); 

    } 


    public void onNothingSelected(AdapterView<?> arg0) { 

    } 

     public void onClick(View view) 
    { 
     startActivity(new Intent(ETrackActivity.this,Configuration.class)); 

    } 

     public String CallWebService(String imei, double longt, double lat) { 
     String response = new String(); 
     String str = new String(); 

     try { 

      String url = "http://helpdesk.cispl.com/etracking/track.php?imei="+imei+"&gps_lat="+ Double.toString(lat) +"&gps_lon="+Double.toString(longt); 
      HttpClient client = new DefaultHttpClient(); 
      HttpGet request = new HttpGet(); 
      URI webservice = new URI(url); 
      request.setURI(webservice); 
      HttpResponse httpResponse = client.execute(request); 
      HttpEntity responseEntity = httpResponse.getEntity();  

      if (responseEntity != null) { 
        response = EntityUtils.toString(responseEntity); 
       }   
      } catch (Exception e1){ 
       e1.printStackTrace(); 
      } 

      return response; 
     } 


} 

매우 감사 할 것 나에게 해결책을주지하시기 바랍니다 .....

답변

2

응용 프로그램을 백그라운드에서 실행하려면 Service

서비스 사용 자습서 : hereherethis

+0

일시 중지 및 재개 서비스를 사용합니다. 그러나 작동하지 않습니다. – bushra

+0

사용법 예를 들어 주시겠습니까? – bushra

관련 문제