我如何从GPS服务获取坐标到文本文件? [英] How do I get coordinates from a GPS service into a text file?

查看:102
本文介绍了我如何从GPS服务获取坐标到文本文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是Android编程的新手。我粘贴的源代码不是我自己的,它来自Github项目。我想将GPS服务的坐标保存到文本文件中。有谁知道如何做到这一点?

  public class MainActivity extends AppCompatActivity {

private Button btn_start, btn_stop;
公共按钮保存;

私有BroadcastReceiver broadcastReceiver;
int delay = 1000; //延迟1秒
int period = 10000; //每10秒重复一次。
定时器定时器=新的定时器();
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(\\\
+ 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);
文件dir = new File(path);
dir.mkdirs();

if(!runtime_permissions())
enable_buttons();


$ b 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);

}
}); (Build.VERSION.SDK_INT> = 23&&& ContextCompat.checkSelfPermission(this,Manifest。)。


$ b private boolean runtime_permissions(){
if (Package.PERMISSION_GRANTED)!= PackageManager.PERMISSION_GRANTED&&& ContextCompat.checkSelfPermission(this,Manifest.permission.ACCESS_COARSE_LOCATION)!= PackageManager.PERMISSION_GRANTED){
$ b requestPermissions(new String [] {Manifest.permission .ACCESS_FINE_LOCATION,Manifest.permission.ACCESS_COARSE_LOCATION},100);

返回true;
}
返回false;


$ b @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&&& amp; grantResults [1] == PackageManager.PERMISSION_GRANTED){
enable_buttons();
} else {
runtime_permissions();
}
}
}
}


解决方案使用 BufferedWriter ,并调用 BufferedWriter.write()方法您的 BroadcastReceiver.onReceive()


$ b

假设您的当前代码有效,您可以在这里检查所需的更改:

  BufferedWriter作家; 

@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(\\\
+ intent.getExtras()。get(coordinates));

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

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

保护无效的onDestroy(){
super.onDestroy();
writer.close();
if(broadcastReceiver!= null){
unregisterReceiver(broadcastReceiver);
}
}


I am new to Android programming. The source code that I have pasted is not my own, it is from a Github project. I want to save the coordinates of a GPS service into a textfile. Does anyone know how to do this?

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();
        }
    }
}
}

解决方案

Make use of a BufferedWriter, and call BufferedWriter.write() method inside your BroadcastReceiver.onReceive().

Assuming your current code works, here you can check the changes needed:

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);
    }
}

这篇关于我如何从GPS服务获取坐标到文本文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆