Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
http connectionandroid.os.NetworkOnMainThreadException中出错_Android - Fatal编程技术网

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

当我启动我的应用程序时,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;
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
  } 
}