Android异步与gps连接到FC
我使用async获得了此GPS侦听器方法:Android异步与gps连接到FC,android,asynchronous,gps,Android,Asynchronous,Gps,我使用async获得了此GPS侦听器方法: // ASync Task Begin to perform Billing information class performBackgroundTask extends AsyncTask<Void, Void, Void> implements GpsStatus.Listener { private Context context; private Progress
// ASync Task Begin to perform Billing information
class performBackgroundTask extends AsyncTask<Void, Void, Void> implements GpsStatus.Listener {
private Context context;
private ProgressDialog dialog;
public performBackgroundTask(Context context) {
performBackgroundTask.this.context = context;
}
protected void onPreExecute() {
dialog = ProgressDialog.show(main.this, "Info", "GPS kapcsolatra vár...");
}
protected Void doInBackground(Void... params) {
// write here the code to download or any background task.
globalconstant.mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
globalconstant.mlocManager.addGpsStatusListener(this);
return null;
}
// protected void onPostExecute(Void unused) {
// if(dialog!=null)
// dialog.dismiss();
//
// }
/* GPS kapcsolódás figyelő */
public void onGpsStatusChanged(int event) {
// Log.w("TravellerLog :: ", "l1");
switch (event) {
case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
break;
case GpsStatus.GPS_EVENT_FIRST_FIX:
dialog.dismiss();
show_sens = show_sens + "- GPS\n";
sensors.setText(show_sens);
//addGPSListener();
Toast.makeText(getApplicationContext(), "GPS kapcsolódva!",
Toast.LENGTH_SHORT).show();// this means you found GPS
// Co-ordinates
//myChronometer.setBase(SystemClock.elapsedRealtime());
myChronometer.start();
meres = true;
start_button.setText("STOP");
break;
case GpsStatus.GPS_EVENT_STARTED:
break;
case GpsStatus.GPS_EVENT_STOPPED:
break;
}
}
// GPS
private void addGPSListener() {
globalconstant.db.setVersion(1);
globalconstant.db.setLocale(Locale.getDefault());
globalconstant.db.setLockingEnabled(true);
final String gps =
"CREATE TABLE IF NOT EXISTS GPS_Values ("
+ "id INTEGER PRIMARY KEY AUTOINCREMENT, Latitude float(10, 8), Longitude float(10, 8),Accuracy INTEGER,Speed INTEGER,timestamp TIMESTAMP);";
globalconstant.db.execSQL(gps);
Log.d("FESTIVALE :: ", "Frissítési idő: "
+ globalconstant.gps_update_value);
float f = Float.valueOf(globalconstant.gps_update_value.trim())
.floatValue();
float update = f * 1000;
globalconstant.mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
globalconstant.mlocListener = new MyLocationListener();
globalconstant.mlocManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER, (long) update, 0,
globalconstant.mlocListener);
}
public class MyLocationListener implements LocationListener {
public void onLocationChanged(Location loc) {
float szel = (float) loc.getLatitude();
float hossz = (float) loc.getLongitude();
int horiAcc = (int) (loc.getAccuracy());
// int speed=(int) ((loc.getSpeed()*3600)/1000); //sebesség km/h-ban
int speed = 0;
if (loc.hasSpeed()) {
speed = (int) ((loc.getSpeed() * 3600) / 1000); // sebesség
// km/h-ban
} else {
speed = 0;
}
String test = String.format("%.08f", szel);
String test2 = String.format("%.08f", hossz);
// Geocoder geocoder = new Geocoder(main.this, Locale.getDefault());
// try {
// List<Address> addresses = geocoder.getFromLocation(szel, hossz,
// 1);
// city = addresses.get(0).getLocality();
// } catch (IOException e) {
// e.printStackTrace();
// }
ContentValues gps_values = new ContentValues();
gps_values.put("Latitude", test);
gps_values.put("Longitude", test2);
gps_values.put("Accuracy", horiAcc);
gps_values.put("Speed", speed);
//gps_values.put("City", city);
SimpleDateFormat dateFormat = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
Date date = new Date(System.currentTimeMillis());
gps_values.put("timestamp", dateFormat.format(date));
try {
globalconstant.db.beginTransaction();
globalconstant.db.insert("GPS_Values", null, gps_values);
globalconstant.db.setTransactionSuccessful();
} finally {
globalconstant.db.endTransaction();
}
Log.d("FESTIVALE :: ", "Hely" + test + ", " + test2 + " , "
+ horiAcc + " , " + speed);
// String Text = "My current location is: " + "Latitude = "
// + loc.getLatitude() + "\nLongitude = " + loc.getLongitude();
// Toast.makeText(getApplicationContext(), "Hely" +test + "\n" +
// test2 + "\n" + horiAcc + "\n" +speed + "\n" +city,
// Toast.LENGTH_SHORT)
// .show();
}
public void onProviderDisabled(String provider) {
Toast.makeText(getApplicationContext(), "Gps Disabled",
Toast.LENGTH_SHORT).show();
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case DialogInterface.BUTTON_POSITIVE:
// show gps otions
Intent gpsOptionsIntent = new Intent(
android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(gpsOptionsIntent);
break;
case DialogInterface.BUTTON_NEGATIVE:
dialog.cancel();
break;
}
}
};
AlertDialog.Builder builder = new AlertDialog.Builder(main.this);
builder.setMessage("A GPS nincs aktiválva!\nAktiválja most?")
.setPositiveButton("Aktivál", dialogClickListener)
.setNegativeButton("Nem", dialogClickListener).show();
}
public void onProviderEnabled(String provider) {
Toast.makeText(getApplicationContext(), "Gps Enabled",
Toast.LENGTH_SHORT).show();
}
public void onStatusChanged(String provider, int status, Bundle extras) {
}
}// gps vége
}
//异步任务开始执行计费信息
类performBackgroundTask扩展AsyncTask实现GpsStatus.Listener{
私人语境;
私人对话;
公共performBackgroundTask(上下文){
performBackgroundTask.this.context=上下文;
}
受保护的void onPreExecute(){
dialog=ProgressDialog.show(main.this,“Info”,“GPS kapcsolatra vár…”);
}
受保护的Void doInBackground(Void…参数){
//在这里写代码下载或任何后台任务。
globalconstant.mlocManager=(LocationManager)getSystemService(Context.LOCATION\u服务);
globalconstant.mlocManager.addGpsStatusListener(this);
返回null;
}
//受保护的void onPostExecute(未使用的void){
//如果(对话框!=null)
//dialog.dismise();
//
// }
/*卡普索洛达斯·菲吉勒*/
公共无效onGpsStatusChanged(内部事件){
//Log.w(“TravellerLog::”,“l1”);
开关(事件){
案例GpsStatus.GPS\事件\卫星\状态:
打破
案例GpsStatus.GPS\u事件\u第一个\u修复:
dialog.dismise();
显示传感器=显示传感器+“-GPS\n”;
传感器。setText(显示传感器);
//addGPSListener();
Toast.makeText(getApplicationContext(),“GPS kapcsolódva!”,
Toast.LENGTH_SHORT).show();//这表示您找到了GPS
//坐标
//myChronometer.setBase(SystemClock.elapsedRealtime());
myChronometer.start();
梅尔斯=真;
开始按钮。设置文本(“停止”);
打破
案例GpsStatus.GPS\u事件\u开始:
打破
案例GpsStatus.GPS\u事件\u停止:
打破
}
}
//全球定位系统
私有void addGPSListener(){
globalconstant.db.setVersion(1);
globalconstant.db.setLocale(Locale.getDefault());
globalconstant.db.setLockingEnabled(真);
最终字符串gps=
“如果不存在GPS_值,则创建表(”
+“id整数主键自动递增、纬度浮点(10,8)、经度浮点(10,8)、精度整数、速度整数、时间戳时间戳);”;
globalconstant.db.execSQL(gps);
Log.d(“节日::”,“Frissítési idő:”
+全球恒定gps_更新_值);
float f=float.valueOf(globalconstant.gps\u update\u value.trim())
.floatValue();
浮动更新=f*1000;
globalconstant.mlocManager=(LocationManager)getSystemService(Context.LOCATION\u服务);
globalconstant.mlocListener=新的MyLocationListener();
globalconstant.mlocManager.RequestLocationUpdate(
LocationManager.GPS_提供程序,(长)更新,0,
globalconstant.mlocListener);
}
公共类MyLocationListener实现LocationListener{
位置更改后的公共无效(位置loc){
float szel=(float)loc.getLatitude();
float hossz=(float)loc.getLongitude();
int horiAcc=(int)(loc.getAccurance());
//int速度=(int)((loc.getSpeed()*3600)/1000);//塞贝塞格公里/小时
int速度=0;
if(loc.hasSpeed()){
速度=(int)((loc.getSpeed()*3600)/1000);//sebesség
//km/h-ban
}否则{
速度=0;
}
字符串测试=String.format(“%.08f”,szel);
String test2=String.format(“%.08f”,hossz);
//Geocoder Geocoder=新的Geocoder(main.this,Locale.getDefault());
//试一试{
//列表地址=geocoder.getFromLocation(szel、hossz、,
// 1);
//city=addresses.get(0.getLocation();
//}捕获(IOE异常){
//e.printStackTrace();
// }
ContentValues gps_values=新ContentValues();
gps_值。输入(“纬度”,测试);
gps_值。put(“经度”,test2);
gps_值。put(“精度”,HORIAC);
gps_值。输入(“速度”,速度);
//gps_值。put(“城市”,城市);
SimpleDataFormat dateFormat=新SimpleDataFormat(
“yyyy-MM-dd HH:MM:ss”);
日期日期=新日期(System.currentTimeMillis());
gps_值.put(“时间戳”,dateFormat.format(date));
试一试{
globalconstant.db.beginTransaction();
globalconstant.db.insert(“GPS_值”,null,GPS_值);
globalconstant.db.setTransactionSuccessful();
}最后{
globalconstant.db.endTransaction();
}
Log.d(“节日::”,“Hely”+测试+
09-26 12:59:10.299: E/AndroidRuntime(719): FATAL EXCEPTION: AsyncTask #1
09-26 12:59:10.299: E/AndroidRuntime(719): java.lang.RuntimeException: An error occured while executing doInBackground()
09-26 12:59:10.299: E/AndroidRuntime(719): at android.os.AsyncTask$3.done(AsyncTask.java:200)
09-26 12:59:10.299: E/AndroidRuntime(719): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
09-26 12:59:10.299: E/AndroidRuntime(719): at java.util.concurrent.FutureTask.setException(FutureTask.java:125)
09-26 12:59:10.299: E/AndroidRuntime(719): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
09-26 12:59:10.299: E/AndroidRuntime(719): at java.util.concurrent.FutureTask.run(FutureTask.java:138)
09-26 12:59:10.299: E/AndroidRuntime(719): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
09-26 12:59:10.299: E/AndroidRuntime(719): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
09-26 12:59:10.299: E/AndroidRuntime(719): at java.lang.Thread.run(Thread.java:1019)
09-26 12:59:10.299: E/AndroidRuntime(719): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
09-26 12:59:10.299: E/AndroidRuntime(719): at android.os.Handler.<init>(Handler.java:121)
09-26 12:59:10.299: E/AndroidRuntime(719): at android.location.LocationManager$GpsStatusListenerTransport$1.<init>(LocationManager.java:1281)
09-26 12:59:10.299: E/AndroidRuntime(719): at android.location.LocationManager$GpsStatusListenerTransport.<init>(LocationManager.java:1281)
09-26 12:59:10.299: E/AndroidRuntime(719): at android.location.LocationManager.addGpsStatusListener(LocationManager.java:1320)
09-26 12:59:10.299: E/AndroidRuntime(719): at com.eyecom.festivale.main$performBackgroundTask.doInBackground(main.java:800)
09-26 12:59:10.299: E/AndroidRuntime(719): at com.eyecom.festivale.main$performBackgroundTask.doInBackground(main.java:1)
09-26 12:59:10.299: E/AndroidRuntime(719): at android.os.AsyncTask$2.call(AsyncTask.java:185)
09-26 12:59:10.299: E/AndroidRuntime(719): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
09-26 12:59:10.299: E/AndroidRuntime(719): ... 4 more