2016-07-21 7 views
0

私はAndroidプログラミングが初めてです。貼り付けたソースコードは自分のものではなく、Githubプロジェクトのものです。私は、GPSサービスの座標をテキストファイルに保存したいと思います。誰もこれを行う方法を知っていますか?GPSサービスからテキストファイルに座標を取得するにはどうすればよいですか?

public class MainActivity extends AppCompatActivity { 

private Button btn_start, btn_stop; 
public Button save; 

private BroadcastReceiver broadcastReceiver; 
int delay = 1000; // delay for 1 sec. 
int period = 10000; // repeat every 10 sec. 
Timer timer = new Timer(); 
public EditText editText; 
public TextView textView; 

public String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/aaTutorial"; 

@Override 
protected void onResume() { 
    super.onResume(); 
    if(broadcastReceiver == null){ 
     broadcastReceiver = new BroadcastReceiver() { 
      @Override 
      public void onReceive(Context context, Intent intent) { 

       textView.append("\n" +intent.getExtras().get("coordinates")); 

      } 
     }; 
    } 
    registerReceiver(broadcastReceiver,new IntentFilter("location_update")); 
} 

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    if(broadcastReceiver != null){ 
     unregisterReceiver(broadcastReceiver); 
    } 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    btn_start = (Button) findViewById(R.id.button); 
    btn_stop = (Button) findViewById(R.id.button2); 
    textView = (TextView) findViewById(R.id.textView); 
    save = (Button) findViewById(R.id.save); 
    File dir = new File(path); 
    dir.mkdirs(); 

    if(!runtime_permissions()) 
     enable_buttons(); 

} 

private void enable_buttons() { 

    btn_start.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent i =new Intent(getApplicationContext(),GPS_Service.class); 
      startService(i); 
     } 
    }); 

    btn_stop.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      Intent i = new Intent(getApplicationContext(),GPS_Service.class); 
      stopService(i); 

     } 
    }); 

} 

private boolean runtime_permissions() { 
    if(Build.VERSION.SDK_INT >= 23 && ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED){ 

     requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION},100); 

     return true; 
    } 
    return false; 
} 


@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    if(requestCode == 100){ 
     if(grantResults[0] == PackageManager.PERMISSION_GRANTED && grantResults[1] == PackageManager.PERMISSION_GRANTED){ 
      enable_buttons(); 
     }else { 
      runtime_permissions(); 
     } 
    } 
} 
} 

答えて

0

BufferedWriterを利用して、そしてあなたのBroadcastReceiver.onReceive()BufferedWriter.write()メソッドを呼び出します。

あなたが必要な変更を確認することができ、ここで、あなたの現在のコードが動作すると仮定:

BufferedWriter writer; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    writer = new BufferedWriter(new FileWriter("mnt/sdcard/gps.txt")); 
    //... 

} 

@Override 
protected void onResume() { 
    super.onResume(); 
    if(broadcastReceiver == null){ 
     broadcastReceiver = new BroadcastReceiver() { 
      @Override 
      public void onReceive(Context context, Intent intent) { 

       textView.append("\n" +intent.getExtras().get("coordinates")); 

       writer.write(intent.getExtras().get("coordinates")); 
       writer.newLine(); 

      } 
     }; 
    } 
    registerReceiver(broadcastReceiver,new IntentFilter("location_update")); 
} 

protected void onDestroy() { 
    super.onDestroy(); 
    writer.close(); 
    if(broadcastReceiver != null){ 
     unregisterReceiver(broadcastReceiver); 
    } 
} 
+0

私はあなたが提案された変更を行ったが、私はエラーを取得:仮想メソッド「空java.io.BufferedWriterを起動しよう。 write(java.lang.String) 'をnullオブジェクト参照に追加します。このエラーは、試行時にtry catch節で発生します。{ writer.write((String)intent.getExtras()。get( "coordinates")); } catch(IOException e){ e.printStackTrace();これはpublic void onReceiveのメソッドです。 – Akshay

関連する問題