gpt4 book ai didi

php - 将 Gps 作为后台服务运行并将坐标发送到 Web 服务器 (PHP)

转载 作者:IT老高 更新时间:2023-10-28 23:19:06 26 4
gpt4 key购买 nike

我知道有很多关于这个问题的问题,我已经经历了几天的所有问题,但找不到合理的答案。我是 android 和 php 的新手,所以我不知道事情是如何完成的。

所以基本上首先我想知道如何在后台运行 gps 作为服务,例如在安装应用程序时它会启动并定期将坐标发送到 Web 服务器?

最佳答案

只需创建一个始终在后台运行的服务。

例如:-

AndroidLocationServices

public class AndroidLocationServices extends Service {

WakeLock wakeLock;

private LocationManager locationManager;

public AndroidLocationServices() {
// TODO Auto-generated constructor stub
}

@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}

@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();

PowerManager pm = (PowerManager) getSystemService(this.POWER_SERVICE);

wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "DoNotSleep");

// Toast.makeText(getApplicationContext(), "Service Created",
// Toast.LENGTH_SHORT).show();

Log.e("Google", "Service Created");

}

@Override
@Deprecated
public void onStart(Intent intent, int startId) {
// TODO Auto-generated method stub
super.onStart(intent, startId);

Log.e("Google", "Service Started");

locationManager = (LocationManager) getApplicationContext()
.getSystemService(Context.LOCATION_SERVICE);

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
5000, 5, listener);

}

private LocationListener listener = new LocationListener() {

@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub

Log.e("Google", "Location Changed");

if (location == null)
return;

if (isConnectingToInternet(getApplicationContext())) {
JSONArray jsonArray = new JSONArray();
JSONObject jsonObject = new JSONObject();

try {
Log.e("latitude", location.getLatitude() + "");
Log.e("longitude", location.getLongitude() + "");

jsonObject.put("latitude", location.getLatitude());
jsonObject.put("longitude", location.getLongitude());

jsonArray.put(jsonObject);

Log.e("request", jsonArray.toString());

new LocationWebService().execute(new String[] {
Constants.TRACK_URL, jsonArray.toString() });
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}

@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub

}

@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub

}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub

}
};

@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();

wakeLock.release();

}

public static boolean isConnectingToInternet(Context _context) {
ConnectivityManager connectivity = (ConnectivityManager) _context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null) {
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null)
for (int i = 0; i < info.length; i++)
if (info[i].getState() == NetworkInfo.State.CONNECTED) {
return true;
}

}
return false;
}

}

LocationWebService

public class LocationWebService extends AsyncTask<String, String, Boolean> {

public LocationWebService() {
// TODO Auto-generated constructor stub
}

@Override
protected Boolean doInBackground(String... arg0) {

ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("location", arg0[1]));

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(arg0[0]);
HttpParams httpParameters = new BasicHttpParams();

httpclient = new DefaultHttpClient(httpParameters);

try {
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

HttpResponse response;
response = httpclient.execute(httppost);
StatusLine statusLine = response.getStatusLine();
if (statusLine.getStatusCode() == HttpStatus.SC_OK) {

Log.e("Google", "Server Responded OK");

} else {

response.getEntity().getContent().close();
throw new IOException(statusLine.getReasonPhrase());
}
} catch (Exception e) {
e.printStackTrace();
}

return null;
}
}

您可以在此 github 项目 androidbackgroundgps 中找到包含 Android 应用程序和相应 WebFiles 的示例项目

关于php - 将 Gps 作为后台服务运行并将坐标发送到 Web 服务器 (PHP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21762293/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com