http connectionandroid.os.NetworkOnMainThreadException中出错
当我启动我的应用程序时,emulator 4.1和4.2出现了问题,即使我已经做了互联网许可,logcat显示此页面: http connectionandroid.os.NetworkOnMainThreadException中出错http connectionandroid.os.NetworkOnMainThreadException中出错,android,Android,当我启动我的应用程序时,emulator 4.1和4.2出现了问题,即使我已经做了互联网许可,logcat显示此页面: http connectionandroid.os.NetworkOnMainThreadException中出错 package com.example.eagletracking; import java.io.InputStream; import java.text.SimpleDateFormat; import java.util.ArrayList
package com.example.eagletracking;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.media.audiofx.BassBoost.Settings;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.widget.Toast;
public class GPSTrackingActivity extends Activity implements LocationListener {
Toast toast;
boolean isGPSAvaible;
private LocationManager lm;
private Location location;
private static String key =DBconection.key;
Calendar currentDate;
SimpleDateFormat formatter;
public static double latitude; // latitude
public static double longitude; // longitude
Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
if (msg.what == 0) {
synchronisation();
}
else if (msg.what == 1) {
updateDatabase(location);
}
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.accueil);
if (isInternetAvailable(this)) {
Thread th = new Thread() {
public void run() {
try {
while (true) {
Thread.sleep(80000);
{
handler.sendEmptyMessage(0);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
};
th.start();
}
}
public static boolean isInternetAvailable(Context context) {
boolean isInternetAvailable = false;
try {
ConnectivityManager connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager
.getActiveNetworkInfo();
if (networkInfo != null && (networkInfo.isConnected())) {
isInternetAvailable = true;
}
} catch (Exception exception) {
// Do Nothing
}
return isInternetAvailable;
}
@Override
protected void onResume() {
super.onResume();
try {
lm = (LocationManager) getSystemService(LOCATION_SERVICE);
isGPSAvaible = lm.isProviderEnabled (LocationManager.GPS_PROVIDER);
if (isGPSAvaible)
{
abonnementGPS();
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void abonnementGPS() {
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 0,
this);
if (lm != null) {
location = lm
.getLastKnownLocation(LocationManager.GPS_PROVIDER);
Thread th = new Thread() {
public void run() {
try {
while (location != null) {
Thread.sleep(6000);
{
handler.sendEmptyMessage(1);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
};
th.start();
}
}
private void synchronisation() {
DBconection maBaseSQLite = new DBconection(GPSTrackingActivity.this);
SQLiteDatabase db = maBaseSQLite.getReadableDatabase();
Cursor c = maBaseSQLite.getAllRows();
int col = c.getCount(); // col=0 pas de enregistrement qui
// verifie la condition
if (col == 0) {
Toast.makeText(GPSTrackingActivity.this, "Pas de donnees ",
Toast.LENGTH_LONG).show();
// effacer le contenue champ login et mot de passe
} else {
c.moveToFirst();
while (c.isAfterLast() == false) {
// conversion int to string casting
String id = "" + c.getInt(0);
String longitude = c.getString(1);
String latitude = c.getString(2);
String time = c.getString(3);
String key_employe = c.getString(4);
InputStream is = null;
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(
4);
// nameValuePairs.add(new BasicNameValuePair("id",
// ch1));
nameValuePairs.add(new BasicNameValuePair("longitude",
longitude));
nameValuePairs
.add(new BasicNameValuePair("latitude", latitude));
nameValuePairs.add(new BasicNameValuePair("time", time));
nameValuePairs.add(new BasicNameValuePair("key_employe", key_employe));
c.moveToNext();
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(
"http://10.0.2.2:8888/android/synchron.php");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
} catch (Exception e) {
Log.d("connexion_expired",
"Error in http connection" + e.toString());
}
}
}
c.close();
maBaseSQLite.del();
maBaseSQLite.close();
}
private void updateDatabase(Location location) {
DBconection maBaseSQLite = new DBconection(GPSTrackingActivity.this);
SQLiteDatabase DB = maBaseSQLite.getWritableDatabase();
// maBaseSQLite.onCreate(DB);
//maBaseSQLite.onUpgrade(DB, 0, 0);
longitude= location.getLatitude();
latitude=location.getLatitude();
currentDate = Calendar.getInstance();
formatter = new SimpleDateFormat("yyyy/MMM/dd HH:mm:ss");
maBaseSQLite.addPoint(String.valueOf(longitude),
String.valueOf(latitude),
formatter.format(currentDate.getTime()),(key));
Log.i("insert ", "ok");
maBaseSQLite.close();
}
@Override
public void onLocationChanged(Location arg0) {
}
@Override
public void onProviderDisabled(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
// TODO Auto-generated method stub
}
}
package com.example.eagletracking;
导入java.io.InputStream;
导入java.text.simpleDataFormat;
导入java.util.ArrayList;
导入java.util.Calendar;
导入org.apache.http.HttpEntity;
导入org.apache.http.HttpResponse;
导入org.apache.http.NameValuePair;
导入org.apache.http.client.HttpClient;
导入org.apache.http.client.entity.UrlEncodedFormEntity;
导入org.apache.http.client.methods.HttpPost;
导入org.apache.http.impl.client.DefaultHttpClient;
导入org.apache.http.message.BasicNameValuePair;
导入android.app.Activity;
导入android.app.AlertDialog;
导入android.content.Context;
导入android.content.DialogInterface;
导入android.content.Intent;
导入android.database.Cursor;
导入android.database.sqlite.SQLiteDatabase;
导入android.location.location;
导入android.location.LocationListener;
导入android.location.LocationManager;
导入android.media.audiofx.BassBoost.Settings;
导入android.net.ConnectivityManager;
导入android.net.NetworkInfo;
导入android.os.Bundle;
导入android.os.Handler;
导入android.util.Log;
导入android.widget.Toast;
公共类GPSTrackingActivity扩展活动实现LocationListener{
吐司;
布尔型isGPSAvaible;
私人位置经理lm;
私人位置;
私有静态字符串key=dbconconnect.key;
日历当前日期;
SimpleDataFormat格式化程序;
公共静态双纬度;//纬度
公共静态双经度;//经度
Handler=newhandler(){
public void handleMessage(android.os.Message msg){
如果(msg.what==0){
同步();
}
else if(msg.what==1){
更新数据库(位置);
}
}
};
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.accueil);
如果(iInternetAvailable(本)){
Thread th=新线程(){
公开募捐{
试一试{
while(true){
睡眠(80000);
{
handler.sendEmptyMessage(0);
}
}
}捕获(例外e){
e、 printStackTrace();
}
}
};
th.start();
}
}
公共静态布尔值isInternetAvailable(上下文){
布尔值isInternetAvailable=false;
试一试{
ConnectivityManager ConnectivityManager=(ConnectivityManager)上下文
.getSystemService(Context.CONNECTIVITY\u服务);
NetworkInfo NetworkInfo=connectivityManager
.getActiveNetworkInfo();
if(networkInfo!=null&(networkInfo.isConnected()){
isInternetAvailable=true;
}
}捕获(异常){
//无所事事
}
返回信息可通过Internet访问;
}
@凌驾
受保护的void onResume(){
super.onResume();
试一试{
lm=(位置管理器)getSystemService(位置服务);
isGPSAvaible=lm.isProviderEnabled(LocationManager.GPS\U提供程序);
if(isGPSAvaible)
{
abonnementGPS();
}
}捕获(例外e){
e、 printStackTrace();
}
}
私有无效abonnementGPS(){
lm.RequestLocationUpdate(LocationManager.GPS_提供程序,10000,0,
这),;
如果(lm!=null){
位置=lm
.getLastKnownLocation(LocationManager.GPS\U提供商);
Thread th=新线程(){
公开募捐{
试一试{
while(位置!=null){
睡眠(6000);
{
handler.sendEmptyMessage(1);
}
}
}捕获(例外e){
e、 printStackTrace();
}
}
};
th.start();
}
}
专用无效同步(){
dbconction maBaseSQLite=新的dbconction(gpstrackactivity.this);
SQLiteDatabase db=maBaseSQLite.getReadableDatabase();
游标c=maBaseSQLite.getAllRows();
int col=c.getCount();//col=0注册时间
//验证la条件
如果(列==0){
Toast.makeText(GPSTrackingActivity.this,“Pas de donnees”,
Toast.LENGTH_LONG).show();
//在过去的一段时间里,我们将为您提供最新的服务
}否则{
c、 moveToFirst();
while(c.isAfterLast()==false){
//将int转换为字符串转换
字符串id=“”+c.getInt(0);
字符串经度=c.getString(1);
字符串纬度=c.getString(2);
字符串时间=c.getString(3);
String key_employe=c.getString(4);
InputStream=null;
ArrayList nameValuePairs=新的ArrayList(
4);
//添加(新的BasicNameValuePair(“id”),
//ch1);
添加(新的BasicNameValuePair(“经度”),
经度);
nameValuePairs
.添加(新的BasicNameValuePair(“纬度”,纬度));
class TheTask extends AsyncTask<Void,Void,Void>
{
protected void onPreExecute()
{ super.onPreExecute();
//display progressdialog.
}
protected void doInBackground(Void ...params)
{
//Network related opearaiton. Do not update ui here
return null;
}
protected void onPostExecute(Void result)
{
super.onPostExecute(result);
//dismiss progressdialog.
//update ui
}
}