如何将 GPS 和网络位置坐标发送到服务器(静态 IP)?

2023-12-06

我是 Android 开发的初学者。我想制作一个 Android 应用程序,它将 GPS 和网络位置(纬度和经度)发送到我的服务器(静态 IP)。 我找到了以下代码并且它工作成功,在服务器端已经制作的应用程序中接收数据(现在它与客户端应用程序无关)

当我单击 Android 应用程序上的“发送位置”按钮时,我的服务器收到的数据。

  • 获取/31.4244456/74.7349772 HTTP/1.1

  • 主机:180.178.169.77:6081

  • 连接:保持活动状态

  • 用户代理:Apache-HttpClient/不可用 (java 1.4)

180.178.169.77是我的服务器IP,6081是端口

此时一切都很顺利,我几乎实现了我想要的目标,但我面临的真正问题是我的 Android 应用程序在将此数据发送到服务器后挂起并崩溃。如果有人有想法,请解决我的问题。

我从这里找到了代码。http://www.gideondsouza.com/blog/how-to-get-the-current-location-address-and-send-it-to-a-server-on-android#.UNLbTOT0Dxo

这是我的 AddressActivity.java

package com.gideon.address;

import java.io.IOException;
import java.util.List;
import java.util.Locale;

import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import android.app.Activity;
import android.content.Context;
import android.location.Address;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;


public class AddressActivity extends Activity {
/** Called when the activity is first created. */
String lat="", lon="";

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Button btnLocation = (Button)findViewById(R.id.btnLocation);
    btnLocation.setOnClickListener(new OnClickListener() {
        public void onClick(View arg0) {
            // Acquire a reference to the system Location Manager
            LocationManager locationManager = (LocationManager) AddressActivity.this.getSystemService(Context.LOCATION_SERVICE);
            // Define a listener that responds to location updates
            LocationListener locationListener = new LocationListener() {
                public void onLocationChanged(Location location) {
                    // Called when a new location is found by the network location provider.
                    lat = Double.toString(location.getLatitude());
                    lon = Double.toString(location.getLongitude());
                    TextView tv = (TextView) findViewById(R.id.txtLoc);
                    tv.setText("Your Location is:" + lat + "--" + lon);
                }

                public void onStatusChanged(String provider, int status, Bundle extras) {}
                public void onProviderEnabled(String provider) {}
                public void onProviderDisabled(String provider) {}
            };
            // Register the listener with the Location Manager to receive location updates
            locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
        }
    });

    Button btnSend = (Button)findViewById(R.id.btnSend);
    btnSend.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            postData(lat, lon);
        }
    });

    Button btnAdd = (Button)findViewById(R.id.btnAddress);
    btnAdd.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            TextView tv = (TextView)findViewById(R.id.txtAddress);
            tv.setText(GetAddress(lat, lon));
        }
    });

}

public void postData(String la, String lo) {
    // Create a new HttpClient and Post Header
    HttpClient httpclient = new DefaultHttpClient();
    //HttpGet  htget = new HttpGet("http://myappurl.com/Home/Book/"+la+"/"+lo);
    HttpGet  htget = new HttpGet("http://180.178.169.77:6081/"+la+"/"+lo);

    try {
        // Execute HTTP Post Request
        HttpResponse response = httpclient.execute(htget);
        String resp = response.getStatusLine().toString();
        Toast.makeText(this, resp, 5000).show();


    } catch (ClientProtocolException e) {
        Toast.makeText(this, "Error", 5000).show();
    } catch (IOException e) {
        Toast.makeText(this, "Error", 5000).show();
    }
} 
public String GetAddress(String lat, String lon)
{
    Geocoder geocoder = new Geocoder(this, Locale.ENGLISH);
    String ret = "";
    try {
        List<Address> addresses = geocoder.getFromLocation(Double.parseDouble(lat), Double.parseDouble(lon), 1);
        if(addresses != null) {
            Address returnedAddress = addresses.get(0);
            StringBuilder strReturnedAddress = new StringBuilder("Address:\n");
            for(int i=0; i<returnedAddress.getMaxAddressLineIndex(); i++) {
                strReturnedAddress.append(returnedAddress.getAddressLine(i)).append("\n");
            }
            ret = strReturnedAddress.toString();
        }
        else{
            ret = "No Address returned!";
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        ret = "Can't get Address!";
    }
    return ret;
}
}

这是我的 AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.gideon.address"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".AddressActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Move postData从主线程切换到辅助线程。看着Async任务示例如下:http://developer.android.com/reference/android/os/AsyncTask.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 GPS 和网络位置坐标发送到服务器(静态 IP)? 的相关文章

  • 如何设置长PreferenceScreen的滚动位置

    Android 应用程序有一些很长的首选项屏幕 它们始终在首选项菜单的顶部打开 我知道用户想要在首选项菜单中的位置 如何强制打开首选项屏幕并滚动到特定的首选项项目 我知道这是一个旧问题 所以这个答案仅供参考 要自动选择给定屏幕 您所要做的就
  • 带身份验证的 MediaPlayer RTSP 视频流

    我能够在未经授权的情况下从网络摄像机流式传输视频 但现在我需要在授权的情况下执行此操作 我发现很少有信息表明 Android 不支持 RTSP 身份验证 但我发现另一条信息表明 通过使用该方法添加标头 可以在 API 级别 14 中实现身份
  • 检测正在插入的设备

    我希望能够检测设备是否已插入 我希望能够像查询连接状态一样进行查询 这可能吗 或者我是否需要创建一个监听电池事件的广播接收器 显然是ACTION BATTERY CHANGED http developer android com refe
  • Android - 手机锁定时执行操作

    我想知道如何在手机锁定时执行某些操作 或继续侦听传感器或电池更换事件 当手机锁定时 它会停止监听传感器的变化 我尝试过使用唤醒锁 但它不起作用 也许我使用错误 任何帮助 将不胜感激 我建议为此使用服务 即使手机被锁定 它们也会在后台运行 这
  • 在运行时绘制HSV圆

    我想在我的应用程序中有一个颜色选择器 如下所示 我尝试过逐像素填充位图 尝试使用画布drawArc 方法 这两种方式都不利于性能 有任何想法吗 它可能不完全是它应该的样子 与颜色 饱和度等有关 但是这是一些东西 http i1272 pho
  • Android 测试 java.lang.NoClassDefFoundError 由于 Fest-Android 出现错误

    我目前正在我的项目中实现 Android 版 Fest 但我似乎遇到了依赖问题 如果我在不包含 Fest 库的情况下运行测试 测试将正常运行 一旦我添加了 Fest 库 测试就不再运行 相反 会抛出异常 我的项目使用以下依赖项 compil
  • Android - 启用和禁用蓝牙 - SDK 3 (OS 1.5) - 以编程方式?

    我编写了代码来以编程方式启用和禁用各种功能 例如 Wifi 振铃模式 飞行模式 您将在电源切换小部件中看到的所有内容 我还没有找到如何做的一个是蓝牙 看来在 SDK level 3 OS 1 5 中没有漂亮的蓝牙管理器类 有没有人指出关于启
  • android新手需要了解“?android:attr/actionBarSize”

    我正在经历拉尔斯 沃格尔的教程 http www vogella com articles AndroidFragments article html在使用 Fragments 时 我遇到了以下代码 android layout margi
  • 如何编写 adb jdwp + adbforward 脚本?

    我正在尝试使用命令行和脚本工具调试 Android 应用程序 我已经受够了 Android Studio 占用我的 CPU 要连接到我的应用程序 我需要adb jdwp获取 pid 然后adb forward tcp 8700 jdwp
  • toArray 与预先确定大小的数组

    使用时ar toArray new String ar size 安卓工作室3 2 1警告预先确定大小的数组并建议空数组 有两种方式将集合转换为数组 使用 预先确定大小的数组 如 c toArray new String c size 或使
  • 如何更改蜂窝中儿童偏好屏幕的背景颜色

    过去几天我一直在寻找解决方案 但找不到 我需要更改右窗格的背景颜色 我知道如何更改左父首选项的颜色 我在清单文件中创建了一个新主题
  • 无法在 Android Studio 中运行项目

    当我尝试在 Android Studio 中运行我的项目时 我收到以下错误消息 Execution failed for task CricHQ dexDebug gt com android ide common internal Log
  • 谷歌的Json解析Gson库:JsonElement和JsonObject有什么区别?

    public abstract class JsonElement extends Object 表示 Json 元素的类 它可以是 JsonObject JsonArray JsonPrimitive 或 JsonNull public
  • Android Studio错误的含义:未注释的参数覆盖@NonNull参数

    我正在尝试 Android Studio 创建新项目并添加默认值后onSaveInstanceState方法创建 MyActivity 类 当我尝试将代码提交到 Git 时 我收到一个我不明白的奇怪错误 代码是这样的 我得到的错误是这样的
  • 安卓独立包

    我有一个很大的 UI 大约 20 25 个屏幕 我应该如何组织我的代码 我应该按功能分成不同的包吗 我是否应该为所有 UI 类创建一个包 然后创建子包进行组织 或者我不应该创建单独的包并组织到文件夹中 任何帮助将不胜感激 当您创建文件夹时
  • 当应用程序从最近的应用程序中滑动时,前台服务会被终止,通知也会被删除

    我有一个foreground service有通知 当应用程序从最近的应用程序托盘中滑出时 服务将被终止 通知也会被删除 这是我的服务的代码VoiceService class Override public IBinder onBind
  • 如何以相同的意图从相机获取全尺寸图片和缩略图

    我一直需要找到这个问题的解决方案 我已经从这个社区搜索并测试了许多解决方案 但任何人都适合帮助我 我有两个活动 第一个活动拍摄一张照片并将其发送到另一个活动 该活动有一个 ImageView 来接收该照片 直到这里我遇到问题 以及一个在数据
  • 如何为部分 Android 活动创建通用代码?

    我的申请中有 14 项活动 这 9 个活动中包含自定义标题栏和选项卡窗格 所以在这里我需要在一个地方编写这个通用代码 而不是在每个包含自定义标题栏和选项卡窗格代码的活动中编写冗余代码 即布局及其活动特定代码 有哪些可能的方法可以做到这一点
  • 找不到与给定名称“@style/Theme.AppCompat.Light”匹配的资源

    我已经研究这个问题几个小时了 从 github 下载存储库后 任何 xml 文件中的唯一错误是 No resource found that matches the given name style Theme AppCompat Ligh
  • 在android中测量不规则多边形的面积

    我正在开发一个应用程序 在其中我在地图上绘制多边形 并且我使用的地图不是谷歌 它的Mapsforge开源离线地图库 我可以通过将地理点转换为像素点来轻松在地图上绘制多边形 但在这里我想发现是不规则的多边形 为此我做了很多尝试 但它让我失败了

随机推荐

  • 使用WebClient在Unity3d中下载大文件

    我正在寻找有关使用 WebClient 在 Unity3d 中下载大型 100mg 文件的任何想法 WWW 异步运行 除了返回内存错误并使应用程序崩溃之外 这将是完美的 因此我已转向此处概述的解决方案 如何在C Sharp中使用unity3
  • 将 JScrollPane 组件添加到 JTable 列

    我正在尝试向 JTable 中的特定列添加滚动功能 我已经实现了一个自定义 TableCellRenderer 组件 我可以很好地看到表格内的滚动窗格 但我无法滚动它 我也尝试过实现 TableCellEditor 但没有任何运气 publ
  • Symfony2 自定义错误异常监听器 - 渲染模板或传递给控制器

    我正在尝试找出在 Symfony2 中处理自定义错误页面的最佳方法 这包括 500 和 404 等 我可以创建自己的自定义模板 error404 html twig 等 并很好地渲染它们 问题是 应用程序需要将一些变量传递到基本模板中以使页
  • 如何避免javascript命名空间冲突?

    我有一个企业应用程序 它导入一些java脚本库 假设A 以及全局命名空间中的一些函数 我们的客户可以扩展我们的平台并导入 jquery 这将导致命名空间冲突 对我来说 帮助客户避免命名空间冲突的最佳方法是什么 因为 jquery 非常流行并
  • 将“numpy.mean”与元组一起用作“axis”参数:不适用于屏蔽数组

    我有一个简单的 3D 数组a1 及其掩码模拟a2 import numpy a1 numpy array 0 00 0 00 0 00 0 88 0 80 0 78 0 75 0 78 0 77 0 00 0 00 0 00 3 29 3
  • ASP.NET mvc 身份验证或会话过期速度比设置的要快

    在我的 ASP NET MVC5 中websiteweb config中的登录和会话超时如下
  • WinForms:当鼠标进入控件时如何使MouseEnter触发?

    我有一个Panel其中包含任意数量的子控件 如果鼠标进入子控件之一Panel 然后MouseEnter事件的Panel没有被解雇 Note 一个相关的问题是 如果鼠标从panel到其中之一子控件 那么专家组的MouseLeave事件被触发
  • jenkins - 无法 ssh 到远程服务器(密钥 - 权限被拒绝),但可以从 cli 工作

    我在本地计算机上运行 Jenkins 试图找出服务器上遇到的远程 ssh 问题 我收到此权限被拒绝错误 这表明密钥有问题 但从 shell 上的同一用户帐户 我绝对可以连接 Started by user anonymous Buildin
  • Javascript正则表达式尝试将名称拆分为标题/名字/姓氏

    我想尝试在 Javascript 中检测一个人名字的不同部分 并将它们剪掉 以便我可以将它们传递给其他东西 名称可以以任何格式出现 例如 维多利亚小姐莱恩 龙志杰小姐 鲍勃 史密斯 Fred Mr Davis 我想尝试写一些简单的东西 这样
  • Visual Studio 设置和部署:添加先决条件

    如何将我希望客户端拥有更多组件的设置和部署项目添加到其中 例如 Microsoft Chart Controls Microsoft SQL 2008 Express Edition not 2005 etc 替代文本http img55
  • 获取上周六的日期 - BusyBox 1.1.0

    由于 BusyBox 中的日期功能不如gnu date 我在计算上周六的日期时遇到问题 last sat date Y m d d last saturday 只适用于 gnu date 我发现了类似的东西可以从 Epoch 计算 busy
  • MVC Web Api 不允许 Windows 身份验证

    我有一个简单的 MVC web api 2 IIS 托管应用程序 我想启用 Windows 身份验证 最初不使用 Owin 我在我的开发机器上运行它并作为本地 IIS 运行 因此 根据我所能找到的 我需要将以下内容添加到 web confi
  • Python 共享库:RTLD_GLOBAL 段错误

    我使用 python swig 包装的 C 库 在它的 init py文件 它sets在导入包含实现代码的共享对象文件之前 使用 dlopen 标志 RTLD GLOBAL 这会导致随后导入 scipy linalg 出现段错误 至少在我的
  • 在c++中实现多个接口

    我的接口层次结构如下 class A public void foo 0 class B public A public void testB 0 class C public A public void testC 0 现在 我想通过相同
  • 如何以编程方式在 iOS 中更改/添加连接 WiFi 的 DNS 服务器?

    我想以编程方式在 iOS 中更改 添加 iPhone 设备连接 WiFi 的 DNS 服务器 Google 公共 DNS IP 地址 IPv4 如下 8 8 8 8 8 8 4 4 我想以编程方式更改 添加它 就像所附屏幕截图中一样 请帮忙
  • Scala Spark:展平键/值结构数组

    我有一个输入数据框 其中包含一个数组类型的列 数组中的每个条目都是一个由键 大约四个值之一 和值组成的结构 我想将其转换为一个数据框 其中每个可能的键都具有一列 并且该值不在该行的数组中的情况下为空 键在任何数组中都不会重复 但它们可能会乱
  • 用不同的颜色对线条进行动画处理

    我正在尝试将我的数据动画化以进行演示 我正在尝试使用 python 的动画包来做到这一点 我想做的事情大致可以归结为第一个例子http jakevdp github io blog 2012 08 18 matplotlib animati
  • Karate-Gattle:报告中带有查询参数的请求未聚合

    我正在对空手道加特林进行 POC 以重复使用我的测试 我已参考文档并安装了这些版本 首先 一切都像往常一样很棒 非常容易设置和启动 我正在调用一个功能文件MySimualtion scala其中还有另外三个抽象功能调用 如下所示 def t
  • 将 Adob​​e Air 3.3 SDK 与 Flash Builder 结合使用

    Adobe Air SDK V3 3终于于2012年6月8日发布 可以在这里下载 http www adobe com products air html 现在我尝试在 Flash Builder V4 6 中使用它 方法是在 Applic
  • 如何将 GPS 和网络位置坐标发送到服务器(静态 IP)?

    我是 Android 开发的初学者 我想制作一个 Android 应用程序 它将 GPS 和网络位置 纬度和经度 发送到我的服务器 静态 IP 我找到了以下代码并且它工作成功 在服务器端已经制作的应用程序中接收数据 现在它与客户端应用程序无