2015-10-20 189 views
1

我正在做短信記錄。我已經獲得信息作爲數據,短信的身體等。但我也想添加GPS座標,其中SMS是從我的設備發送的,並且與傳入的SMS一樣。獲取/發送短信時如何獲取GPS座標?

我如何獲得SMS信息:

public List<String> getInboundSMSCaptured() { 
    EnterpriseDeviceManager edm = (EnterpriseDeviceManager) getSystemService(EnterpriseDeviceManager.ENTERPRISE_POLICY_SERVICE); 
    DeviceInventory deviceInventoryPolicy = edm.getDeviceInventory(); 

    List<String> list = new ArrayList<String>(); 
    List<String> outlist = new ArrayList<String>(); 

    try { 
     deviceInventoryPolicy.enableSMSCapture(true); 
     // The device has likely logged some SMS messages at some point 
     // after 
     // enabling the policy. 
     list = deviceInventoryPolicy.getInboundSMSCaptured(); 

     String separator = ";"; 

     TelephonyManager telemamanger = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 
     // String getSimSerialNumber = telemamanger.getSimSerialNumber(); //serial 
     // String imei = telemamanger.getDeviceId(); // imei 
     String OperatorName = telemamanger.getSimOperatorName(); // operator 

     for (String log : list) { 
      String character = "$"; 
      String newlog = log + character; 
      newlog = newlog.replace("\n", "").replace("\r", ""); 
      outlist.add(newData(getPieceOfStr("TimeStamp:", " - ", log)) 
        + separator + "In" + separator 
        + getPieceOfStr("From:", " - ", log) + separator 
        + OperatorName + separator + "\ufeff" 
        + getPieceOfStr("Body:", LastElement(newlog), newlog) 
        + separator); 
     } 

    } catch (SecurityException e) { 
     Log.w(TAG, "SecurityException: " + e); 
    } 
    return outlist; 
} 

然後我在設備上創建CSV文件:

public void writeAllSMSs(List<String> InSMSs, List<String> OutSMSs) { 

    List<String> AllSMSs_list = new ArrayList<String>(); 

    InSMSs = getInboundSMSCaptured(); 
    OutSMSs = getOutboundSMSCaptured(); 

    TelephonyManager telemamanger = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 
    String imei = telemamanger.getDeviceId(); 

    // separator for excel 
    String separator = ";"; 

    AllSMSs_list = InSMSs; 

    AllSMSs_list.addAll(OutSMSs); 

    // sort from old to new calls 
    Collections.sort(AllSMSs_list); 

    // add info on top of file 
    AllSMSs_list.add(0, "Time" + separator + "Status" + separator 
      + "SMS Number" + separator + "Operator" + separator + "Body" 
      + separator + "Latitude" + separator + "Longitude"); 

    try { 
     FileOutputStream fileout = openFileOutput("SMS's.csv", 
       MODE_MULTI_PROCESS); 
     OutputStreamWriter outputWriter = new OutputStreamWriter(fileout); 

     for (int i = 0; i < AllSMSs_list.size(); i++) { 
      outputWriter.write(AllSMSs_list.get(i) + "\n"); 
     } 

     Collections.reverse(AllSMSs_list); 

     outputWriter.write("\n\nFile created: " + currentData()); 

     outputWriter.flush(); 
     outputWriter.close(); 

     // display file saved message 
     Toast.makeText(getBaseContext(), "File saved successfully!", 
       Toast.LENGTH_SHORT).show(); 

     copyFile("/data/data/com.example.samsungmdm/files/SMS's.csv", 
     // for android /0/ for knox /100/ 
       "/storage/emulated/0/KNOX_Logs/" 
       // "/storage/emulated/100/KNOX_Logs/" 
         + imei + " SMS's.csv"); 

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

感謝

+6

這篇文章夠用嗎? http://stackoverflow.com/questions/1513485/how-do-i-get-the-current-gps-location-programmatically-in-android – albertoiNET

+2

@AlbertoInet謝謝。但主要問題是如何團結得到座標和SMS –

+0

不客氣。你可以發佈一個你的短信記錄器類的碎片來嘗試實現GPS嗎? – albertoiNET

回答

2

我沒有Android的工作室,現在在這個PC,很抱歉有任何語法錯誤。在你創建了類,你必須添加

public classs yourclass { 
    public void writeAllSMSs(List<String> InSMSs, List<String> OutSMSs) { 

     LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
     LocationListener locationListener = new GPS(); 
     locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener); 

     ... 
     //Now you can use 
     GPS gps = new GPS(); 
     //And obtain 
     gps.getCurrentLatitude(); 
     gps.getCurrentLongitude(); 
     //Where you need put coordinates 
    } 
} 

,並創建一個新的類,GPS例如,實現LocationListener的

private class GPS implements LocationListener { 
    private static location = new LatLng(); 

    public double getCurrentLatitude(){ 
     return location.latitude; 
    } 

    public double getCurrentLongitude(){ 
     return location.longitude; 
    } 

    @Override 
    public void onLocationChanged(Location _location) { 
     location.latitude = _location.getLatitude(); 
     location.longitude = _location.getLongitude();  
    } 

    @Override 
    public void onProviderDisabled(String provider) {} 

    @Override 
    public void onProviderEnabled(String provider) {} 

    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) {} 
} 

不要忘了Android清單准許

< uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />