2012-04-27 23 views
-1

私はgpsを数日から調整して表示しようとしていましたが、まだ結論に至っていません。 私は何をしようとしている人の緯度と経度を取得し、Webサーバー上に表示することです。私はPHPサーバとmysqlデータベースを手に入れました。 エラーはありませんが、URLウェブサーバーの緯度と経度を表示

public class UseGps extends Activity 

{ 


/** Called when the activity is first created. */ 

@Override 

public void onCreate(Bundle savedInstanceState) 

{ 

super.onCreate(savedInstanceState); 

setContentView(R.layout.main); 



/* Use the LocationManager class to obtain GPS locations */ 

LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 

LocationListener mlocListener = new MyLocationListener(); 



mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mlocListener); 



} 



/* Class My Location Listener */ 

public class MyLocationListener implements LocationListener 

{ 
Context context; 
public void onLocationChanged(Location loc) 

{ 


double latitude = loc.getLatitude(); 

double longitude = loc.getLongitude(); 
Toast.makeText(context, "Latitude:" +latitude + "Longitude:" +longitude, 5000).show(); 
TelephonyManager telephonyManager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE); 
String Devid = telephonyManager.getDeviceId(); 




//this is JSON part to put your information inside it 
String postData = "{\"request\":{\"type\":\"locationinfo\"},\"userinfo\":{\"Devid\":\""+Devid+"\",\"latitude\":\""+latitude+"\",\"longitude\":\""+longitude+"\"}}"; 

Uri uri = Uri.parse("http://location.site88.net/store.php"); 
Intent intent = new Intent(Intent.ACTION_VIEW, uri); 
startActivity(intent); 
String url="http://location.site88.net/storeg.php"; 

DefaultHttpClient httpClient = new DefaultHttpClient(); 
HttpPost httpPost = new HttpPost(url); 

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(3); 
nameValuePairs.add(new BasicNameValuePair("Devid", Devid)); 
nameValuePairs.add(new BasicNameValuePair("latitude", Double.toString(latitude))); 
nameValuePairs.add(new BasicNameValuePair("longitude", Double.toString(longitude))); 

try { 
    httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
} catch (UnsupportedEncodingException e1) { 
    // TODO Auto-generated catch block 
    e1.printStackTrace(); 
} 
HttpResponse httpResponse = null; 
String result = null; 
try { 
    httpResponse = httpClient.execute(httpPost); 
    HttpEntity httpEntity = httpResponse.getEntity(); 
    if (httpEntity != null) { 
     InputStream instream = null; 
     instream = httpEntity.getContent(); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(instream,"iso-8859-1"),8); 
     StringBuilder sb = new StringBuilder(); 
     String line = null; 
     while ((line = reader.readLine()) != null) { 
      sb.append(line + "\n"); 
      Toast.makeText(getApplicationContext(), "pass", Toast.LENGTH_SHORT).show(); 
     } 
     instream.close(); 
       result=sb.toString(); 
     } 
} catch (ClientProtocolException e1) { 
    // TODO Auto-generated catch block 
    e1.printStackTrace(); 
} catch (IOException e1) { 
    // TODO Auto-generated catch block 
    e1.printStackTrace(); 
} 
} 
public void onProviderDisabled(String provider) { 
// TODO Auto-generated method stub 

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

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

    }}} 

答えて

0

使用

nameValuePairs.add(new BasicNameValuePair("latitude", Double.toString(latitude))); 
nameValuePairs.add(new BasicNameValuePair("longitude", Double.toString(longitude))); 
nameValuePairs.add(new BasicNameValuePair("devid", devid)); 
try { 
    httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
} catch (UnsupportedEncodingException e1) { 
    // TODO Auto-generated catch block 
    e1.printStackTrace(); 
} 
HttpResponse httpResponse = null; 
try { 
    httpResponse = httpClient.execute(httpPost); 
    HttpEntity httpEntity = httpResponse.getEntity(); 
    if (httpEntity != null) { 
     InputStream instream = null; 
     instream = httpEntity.getContent(); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(instream,"iso-8859-1"),8); 
     StringBuilder sb = new StringBuilder(); 
     String line = null; 
     while ((line = reader.readLine()) != null) { 
      sb.append(line + "\n"); 
      Toast.makeText(getApplicationContext(), "pass", Toast.LENGTH_SHORT).show(); 
     } 
     instream.close(); 
       result=sb.toString(); 
     } 
} catch (ClientProtocolException e1) { 
    // TODO Auto-generated catch block 
    e1.printStackTrace(); 
} catch (IOException e1) { 
    // TODO Auto-generated catch block 
    e1.printStackTrace(); 
} 

代わりの

HttpResponse Response = httpClient.execute(httpPost); 
InputStream httpEntity = httpResponse.getEntity().getContent(); 
+0

許可を与えることを忘れないでください..? –

+0

これはサーバーにデータを投稿するための正しい方法ですが、なぜサーバーに2つの時刻データを投稿しているのですか? –

+0

2回ですか?ちょうど上記のコードを編集 –

0

これが本当のデバイスに取り組んでいるこのいずれかを使用して上に表示は何もありません。

public class GpslocationActivity extends Activity implements LocationListener{ 

private TextView latituteField; 
private TextView longitudeField; 
private LocationManager locationManager; 
private String provider; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    latituteField = (TextView) findViewById(R.id.TextViewLatitudereply); 
    longitudeField = (TextView) findViewById(R.id.TextViewLongitutereply); 

    // Get the location manager 
    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

    Criteria criteria = new Criteria(); 
    provider = locationManager.getBestProvider(criteria, false); 
    Location location = locationManager.getLastKnownLocation(provider); 


    if (location != null) { 
     System.out.println("Provider " + provider + " has been selected."); 
     int lat = (int) (location.getLatitude()); 
     int lng = (int) (location.getLongitude()); 
     latituteField.setText(String.valueOf(lat)); 
     longitudeField.setText(String.valueOf(lng)); 
    } else { 
     latituteField.setText("Provider not available"); 
     longitudeField.setText("Provider not available"); 
    } 
} 

/* Request updates at startup */ 
@Override 
protected void onResume() { 
    super.onResume(); 
    locationManager.requestLocationUpdates(provider, 400, 1, this); 
} 

/* Remove the locationlistener updates when Activity is paused */ 
@Override 
protected void onPause() { 
    super.onPause(); 
    locationManager.removeUpdates(this); 
} 

@Override 
public void onLocationChanged(Location location) { 
    int lat = (int) (location.getLatitude()); 
    int lng = (int) (location.getLongitude()); 
    latituteField.setText(String.valueOf(lat)); 
    longitudeField.setText(String.valueOf(lng)); 
} 

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

} 

@Override 
public void onProviderEnabled(String provider) { 
    Toast.makeText(this, "Enabled new provider " + provider,Toast.LENGTH_SHORT).show(); 

} 

@Override 
public void onProviderDisabled(String provider) { 
    Toast.makeText(this, "Disabled provider " + provider,Toast.LENGTH_SHORT).show(); 
} 
} 

ウェブに投稿するために、他の方法があります

<uses-permission android:name="android.permission.INTERNET"/> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
+0

私はそれをウェブに投稿する必要があります...緯度と経度の値... –