2016-01-19 5 views
7

1.Ich speichere die Android GPS aktivieren und deaktivieren Zeit mit einem Text Log-Datei in SD-Karte.Android GPS aktivieren/deaktivieren Zeit speichern in einer Textdatei im Inneren SDCARD mit Multiple Linien

Ich möchte mehrzeiligen Text drucken, ohne vorhergehende Daten zu löschen.

Unten Code ist Drucken mehrerer Zeilen perfekt, aber wenn App im Schlaf und Neustart gehalten wird. Drucken einer Zeile mit vorherigen Daten Zählen, wenn GPS EIN oder AUS ist.

Hilf mir, wie es zu beheben.

Required Output:(after Restart the app) 

<< GPs Enabled At :2016/06/08 17.15.00>> 
<< GPs Disabled At :2016/06/08 17.45.00>> 
<< GPs Enabled At :2016/06/08 17.49.00>> 
<< GPs Disabled At :2016/06/08 17.52.00>> 

Getting Output:(after Restart the app) 

<< GPs Enabled At :2016/06/08 17.15.00>> 
<< GPs Disabled At :2016/06/08 17.45.00>> 
<< GPs Enabled At :2016/06/08 17.49.00>> 
<< GPs Disabled At :2016/06/08 17.52.00>> 
<< GPs Disabled At :2016/06/08 17.52.00>> 
<< GPs Disabled At :2016/06/08 17.52.00>> 

Methode für Protokolldatei:

public void Logmethod(String NoramalStr,String Dateval) 
    { 

    /* Log FOlder Text files Starts here*/ 
      try { 

       File newFolder = new File(Environment.getExternalStorageDirectory(), "GpsFolder"); 
       if (!newFolder.exists()) { 
        newFolder.mkdir(); 
       } 
       try { 
        File file = new File(newFolder, "GPSStatus" + ".txt"); 
        file.createNewFile(); 

       /*Writing the Log in specific files*/ 
        BufferedWriter out; 
        try { 


         String separator1 = System.getProperty("line.separator"); 
         FileOutputStream fOut = new FileOutputStream(new File(newFolder + "/GPSStatus.txt"), true); 
         OutputStreamWriter osw = new OutputStreamWriter(fOut); 
         osw.append("<< " + NoramalStr +" : "+Dateval + " >>"); 
         osw.append(separator1); // this will add new line ; 
         osw.flush(); 
         osw.close(); 
         fOut.close(); 

         Log.i(NoramalStr," : "+Dateval); 

        } catch (FileNotFoundException e) { 
         e.printStackTrace(); 
        } catch (IOException e) { 
         e.printStackTrace(); 
        } 


       } catch (Exception ex) { 
        System.out.println("ex: " + ex); 
       } 
      } catch (Exception e) { 
       System.out.println("e: " + e); 
      } 


     } 
+2

Ich bin ein wenig unklar, über die Frage. Sie erwähnen das Wort "löschen" mehrmals, aber es scheint, dass der Unterschied zwischen Ihrer erforderlichen Ausgabe und Ihrer tatsächlichen Ausgabe darin besteht, dass Sie doppelte Zeilen drucken. Ist das Problem mit Duplikationen oder mit Löschungen? – OYRM

+0

Es sieht so aus, als ob die Logmethode mehr als einmal aufgerufen wird. Können Sie den Code hinzufügen, der diese Methode aufruft? – TDG

+0

@Kumar: Sie versuchen, Protokolle zu drucken, wenn App nicht ausgeführt wird oder Gerät neu starten? –

Antwort

0

Wenn die Frage nach Löschungen von Protokolldatei: Sie immer tun createNewFile Versuch für Datei zu überprüfen vorhanden

public void Logmethod(String NoramalStr, String Dateval) { 

    try { 

     File newFolder = new File(Environment.getExternalStorageDirectory(), "GpsFolder"); 
     boolean directoryExists = newFolder.exists(); 

     Log.d(TAG, " directoryExists = " + directoryExists); 

     if (!directoryExists) { 
      boolean dirCreate = newFolder.mkdir(); 
      Log.d(TAG, " dirCreate = " + dirCreate); 
     } 
     File file = new File(newFolder, "GPSStatus" + ".txt"); 

     boolean fileExists = file.exists(); 
     Log.d(TAG, " fileExists = " + fileExists); 

     if (!fileExists) { 
      boolean fileCreateResult = file.createNewFile(); 
      Log.d(TAG, " fileCreateResult = " + fileCreateResult); 
     } 

     String separator1 = System.getProperty("line.separator"); 
     FileOutputStream fOut = new FileOutputStream(new File(newFolder + "/GPSStatus.txt"), true); 
     OutputStreamWriter osw = new OutputStreamWriter(fOut); 
     osw.append("<< "); 
     osw.append(NoramalStr); 
     osw.append(" : "); 
     osw.append(Dateval); 
     osw.append(" >>"); 
     osw.append(separator1); // this will add new line ; 
     osw.flush(); 
     osw.close(); 
     fOut.close(); 

     Log.i(TAG, " : " + Dateval); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

Wenn es geht um das ständige Abhören von Standortanbietern aktivieren/deaktivieren Blick auf How do I receive the system broadcast when GPS status has changed? und Verwendung Empfänger in der Manifest-Datei

<receiver android:name=".GPStStatusReceiver"> 
     <intent-filter> 
      <action android:name="android.location.PROVIDERS_CHANGED" /> 
     </intent-filter> 
    </receiver> 
0
try { 
      File file = new File(newFolder, "GPSStatus" + ".txt"); 
       if (!file.exists()) { 
      file.createNewFile(); 
     } 

und dann

 FileWriter writer = new FileWriter(file,true); 
     writer.append(response);// you want to expand 
     writer.flush(); 
     writer.close(); 
     Log.e("Suceess", "'file Write"); 

Diese Hilfe Sie

Verwandte Themen