将gps坐标发送到另一部手机

时间:2013-12-05 04:53:05

标签: java android gps

我创建了一个应用程序,当我点击一个按钮时,它会给我我的gps坐标。但是,当我点击该按钮时,我希望将它们发送到安装了此应用程序的另一部手机。我怎样才能做到这一点?非常感谢你提前给出答案。

到目前为止,这是我的代码: 这是.java文件:(Saver.java):

package com.example.lifesaver;

import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class Saver extends Activity {

Button b;

Location newLocation = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_saver);
b = (Button) findViewById(R.id.button1);

b.setOnClickListener(new OnClickListener(){
  public void onClick(View v)
  {
      if (newLocation != null) {

          String Text = "Current location is: " + "Latitud = "
                  + newLocation.getLatitude() + "Longitud = "
                  + newLocation.getLongitude();
          Toast.makeText(getApplicationContext(), Text,
                  Toast.LENGTH_SHORT).show();
      }
  }
}); 


// We use 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);
}

//MyLocationListener class

public class MyLocationListener implements LocationListener
{

    public void onLocationChanged(Location loc)
    {
        newLocation = loc;
    }

    public void onProviderDisabled(String provider)
    {
        Toast.makeText(getApplicationContext(), "Gps Disabled", Toast.LENGTH_SHORT).show();
    }

    public void onProviderEnabled(String provider)
    {
        Toast.makeText(getApplicationContext(), "Gps Enabled", Toast.LENGTH_SHORT).show();
    }

    public void onStatusChanged(String provider, int status, Bundle extras)
    {
    }
}
}

.xml文件(activity_saver.xml):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".Saver" >

<Button
android:id="@+id/button1"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:background="@drawable/circle" 
android:onClick="onClick"/>

</RelativeLayout>

另外,我在AndroidManifest.xml文件中添加了这个:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION">
</uses-permission>

4 个答案:

答案 0 :(得分:2)

您需要在服务器的帮助下完成,您可以做一件事。将Device IDGPS Cordinates一起发送到服务器,为此您需要创建一个Web服务。

整个事情如下。

假设您有两台设备,一台设备为DeviceA&amp; secound设备为DeviceB,目前如果您使用的是DeviceA,并且想要发送GPS CordinatesDeviceB,请先获取设备A的设备ID,您可以找到设备ID任何Android设备如下

public static String deviceId(Context c){
        TelephonyManager tManager = (TelephonyManager)c.getSystemService(Context.TELEPHONY_SERVICE);
        String deviceId = tManager.getDeviceId();
        return deviceId;
    }

此方法将为您提供返回的设备ID。设备ID是每个Android应用程序的唯一标识。

获取设备ID后,您需要找到设备的GPS坐标。您可以按以下方式进行操作

private void _getLocation() {
    // Get the location manager
    LocationManager locationManager = (LocationManager) 
            getSystemService(LOCATION_SERVICE);
    Criteria criteria = new Criteria();
    String bestProvider = locationManager.getBestProvider(criteria, false);
    Location location = locationManager.getLastKnownLocation(bestProvider);
    try {
        lat = location.getLatitude();
        lon = location.getLongitude();
    } catch (NullPointerException e) {
        lat = -1.0;
        lon = -1.0;
    }
}

此方法会为您提供您所在位置的纬度和经度......

所以,现在你有两个值设备ID&amp; GPS Cordinates,您可以将这两个值传递给您的网络服务器,并从Web服务器将此数据传递给该设备刚刚发送的设备ID。

好的,现在的问题是如何让GPS Cordinates获得设备,可以按照以下方式完成。

制作一个单独的网络服务,用于通过设备ID获取GPS Cordinates,因此只需将secound设备的设备ID传递给webservice,作为回报,您将获得GPS数据。

我希望你清楚我的逻辑

祝你好运

答案 1 :(得分:0)

您需要使用Socket连接或者必须将其发送到两个手机都可以访问的网络服务,如果手机附近使用蓝牙套接字, 就像在本教程中一样 http://digitalhacksblog.blogspot.in/2012/05/android-example-bluetooth-simple-spp.html

http://myandroidsolutions.blogspot.in/2012/07/android-tcp-connection-tutorial.html

答案 2 :(得分:0)

根据我的想法,如果设备在附近或任何地方,您可以使用Google云消息传递来实现该功能。您可以在此处查看演示: http://www.androidhive.info/2012/10/android-push-notifications-using-google-cloud-messaging-gcm-php-and-mysql/

答案 3 :(得分:0)

您可以使用以下其中一项发送这些坐标:

  1. 发送短信(SMS)到另一部手机。
  2. 通过电子邮件发送。
  3. 使用服务器发送(告诉服务器,然后服务器告诉另一部电话)
  4. 您可以使用第三方消息服务(其他)
  5. 因此,一旦您决定要用于沟通的内容,我们就可以为您提供进一步的帮助。