【手机定位软件-适合定位小孩,老人,保护家人安全】

下面说一下免费制作手机定位软件的实现方法,需要了解的朋友需要耐心的看完下面的内容,讲解通俗易懂,分几部讲解

第一步:拨打运营商电话,索要固定ip地址

1.运营商会告诉你ip资源紧缺,告诉他们,自己买的摄像头需要固定ip,如果他们还是不给,就告诉他们,不给就去工信部投诉,因为固定ip的钱,开宽带时已经出了的
2.有了固定ip,网上输入自己光猫的配置网站,我这边是电信,如下图,外部端口是互联网访问自己电脑或者手机的端口,内部端口是自己电脑或手机文件的端口

第二步:网上下载KSWEB,或者加我qq846988356分享给你

1.为主机配置本机文件的端口
2.手机文件管理器中 的htdocs文件夹 就是存放html,js,css,php等文件的地方

第三步:上百度地图定位,申请开发者账号

链接:百度地图定位
1.填写图中的内容
2.保存访问应用AK,后面会用到
3.下载定位开发包
链接:定位开发包

第四步:打开Android Studio

1.导入开发包(鼠标右键在这个位置,Add as Library),OK确定

发送端源码:

(LocationActivity.java)
这是只是改了个名字,刚创建android工程时,名字是MainActivity.java

package com.baidu.location.demo;import com.baidu.send.R;
import com.baidu.location.BDAbstractLocationListener;
import com.baidu.location.BDLocation;
import com.baidu.location.service.LocationService;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.text.method.ScrollingMovementMethod;
import android.util.Log;
import android.widget.TextView;
import org.json.JSONObject;
import java.io.DataOutputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Map;public class LocationActivity extends Activity {//先定义动态获取权限private static final int REQUEST_EXTERNAL_STORAGE = 1;private static final String[] PERMISSIONS_STORAGE = {"android.permission.READ_EXTERNAL_STORAGE","android.permission.WRITE_EXTERNAL_STORAGE" };//然后通过一个函数来申请public static void verifyStoragePermissions(Activity activity) {try {//检测是否有写的权限int permission = ActivityCompat.checkSelfPermission(activity,"android.permission.WRITE_EXTERNAL_STORAGE");if (permission != PackageManager.PERMISSION_GRANTED) {// 没有写的权限,去申请写的权限,会弹出对话框ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE,REQUEST_EXTERNAL_STORAGE);}} catch (Exception e) {e.printStackTrace();}}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.location);verifyStoragePermissions(this);}@Overrideprotected void onStart() {super.onStart();LocationService locationService = ((LocationApplication) getApplication()).locationService;locationService.registerListener(mListener);//注册监听int type = getIntent().getIntExtra("from", 0);if (type == 0) {locationService.setLocationOption(locationService.getDefaultLocationClientOption());} else if (type == 1) {locationService.start();}locationService.start();}private BDAbstractLocationListener mListener = new BDAbstractLocationListener() {@Overridepublic void onReceiveLocation(BDLocation location) {if (null != location && location.getLocType() != BDLocation.TypeServerError) {String address=location.getAddrStr();String path="你自己的公网ip+端口+xxx.php";//比如:http://123.122.108.135:8011/send.phpnew Thread(() -> postTask(address,path)).start();}}};private void postTask(String address,String path)  {try {URL url=new URL(path);HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setRequestMethod("POST");conn.setDoOutput(true);conn.setDoInput(true);conn.setUseCaches(false);conn.setConnectTimeout(5000);conn.connect();Map<String,String> data=new HashMap<String,String>();@SuppressLint("SimpleDateFormat") SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");Date date=new Date(System.currentTimeMillis());data.put("address",address);//这是提交地址data.put("period",simpleDateFormat.format(date));//这里提交时间JSONObject response=new JSONObject(data);Log.i("提交的数据是:",response.toString());OutputStream os=conn.getOutputStream();DataOutputStream objout=new DataOutputStream(os);objout.write(response.toString().getBytes());objout.flush();os.close();objout.close();int code=conn.getResponseCode();if(code==200){Log.i("请求码:", String.valueOf(code));}else{Log.i("连接错误:",String.valueOf(code));}} catch (Exception e) {e.printStackTrace();}}
}

(LocationService.java)

package com.baidu.location.service;import com.baidu.location.BDAbstractLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.location.LocationClientOption.LocationMode;
import android.content.Context;public class LocationService {private static LocationClient client = null;private static LocationClientOption mOption;private static LocationClientOption  DIYoption;private Object objLock;public LocationService(Context locationContext) {objLock = new Object();synchronized (objLock) {if (client == null) {client = new LocationClient(locationContext);client.setLocOption(getDefaultLocationClientOption());}}}public boolean registerListener(BDAbstractLocationListener listener) {boolean isSuccess = false;if (listener != null) {client.registerLocationListener(listener);isSuccess = true;}return isSuccess;}public static boolean setLocationOption(LocationClientOption option) {boolean isSuccess = false;if (option != null) {if (client.isStarted()) {client.stop();}DIYoption = option;client.setLocOption(option);}return isSuccess;}public LocationClientOption getDefaultLocationClientOption() {if (mOption == null) {mOption = new LocationClientOption();mOption.setLocationMode(LocationMode.Hight_Accuracy); // 可选,默认高精度,设置定位模式,高精度,低功耗,仅设备mOption.setCoorType( "bd09ll" ); // 可选,默认gcj02,设置返回的定位结果坐标系,如果配合百度地图使用,建议设置为bd09ll;mOption.setScanSpan(5*60*1000); // 可选,默认0,即仅定位一次,设置发起连续定位请求的间隔需要大于等于1000ms才是有效的mOption.setIsNeedAddress(true); // 可选,设置是否需要地址信息,默认不需要mOption.setIsNeedLocationDescribe(true); // 可选,设置是否需要地址描述mOption.setNeedDeviceDirect(false); // 可选,设置是否需要设备方向结果mOption.setLocationNotify(false); // 可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果mOption.setIgnoreKillProcess(true); // 可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stopmOption.setIsNeedLocationDescribe(true); // 可选,默认false,设置是否需要位置语义化结果,可以在BDLocationmOption.setIsNeedLocationPoiList(true); // 可选,默认false,设置是否需要POI结果,可以在BDLocationmOption.SetIgnoreCacheException(false); // 可选,默认false,设置是否收集CRASH信息,默认收集mOption.setOpenGps(true); // 可选,默认false,设置是否开启Gps定位mOption.setIsNeedAltitude(false); // 可选,默认false,设置定位时是否需要海拔信息,默认不需要,除基础定位版本都可用}return mOption;}public void start() {synchronized (objLock) {if (client != null && !client.isStarted()) {client.start();}}}
}

(Location.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"></LinearLayout>

(AndroidManifest.xml)

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"package="com.baidu.send"><!-- 这个权限用于进行后台定位--><uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/><!-- 这个权限用于进行网络定位--><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/><!-- 这个权限用于访问GPS定位--><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/><!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位--><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/><!-- 获取运营商信息,用于支持提供运营商信息相关的接口--><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位--><uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/><!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据--><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"tools:ignore="ScopedStorage" /><!-- 访问网络,网络定位需要上网 --><uses-permission android:name="android.permission.INTERNET"/><!-- 允许挂载和反挂载文件系统可移动存储 --><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"tools:ignore="ProtectedPermissions" /><!-- 允许程序读取底层系统日志文件 --><uses-permission android:name="android.permission.READ_LOGS"tools:ignore="ProtectedPermissions" /><!-- 允许访问振动设备 --><uses-permission android:name="android.permission.VIBRATE"/><!-- 允许使用PowerManager的 WakeLocks保持进程在休眠时从屏幕消失 --><uses-permission android:name="android.permission.WAKE_LOCK"/><!-- 允许程序读取或写入系统设置 --><uses-permission android:name="android.permission.WRITE_SETTINGS"tools:ignore="ProtectedPermissions" /><!-- android 9.0上使用前台服务,需要添加权限 --><uses-permission android:name="android.permission.FOREGROUND_SERVICE" /><!-- 用于读取手机当前的状态 --><uses-permission android:name="android.permission.READ_PHONE_STATE" /><!-- 读取缓存数据 --><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><!-- 获取模拟定位信息 --><applicationandroid:name="com.baidu.location.demo.LocationApplication"android:allowBackup="true"android:persistent="true"android:usesCleartextTraffic="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@android:style/Theme.Black"><!-- 声明service组件 --><serviceandroid:name="com.baidu.location.f"android:enabled="true"android:process=":remote"/><!-- AK鉴权 --><meta-dataandroid:name="com.baidu.lbsapi.API_KEY"android:value="这是填写在百度申请的AK" /><activityandroid:name="com.baidu.location.demo.LocationActivity"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>

创作不易,白嫖不好,各位的支持和认可,就是我创作的最大动力,欢迎点赞,关注,收藏,下一篇接上(接收端源码)

java实现手机定位,java实时定位,定位功能,gps定位-适合定位小孩,老人,保护家人安全】相关推荐

  1. java 调手机摄像头,java调用摄像头并照相

    当前位置:我的异常网» 编程 » java调用摄像头并照相 java调用摄像头并照相 www.myexceptions.net  网友分享于:2014-03-02  浏览:16次 java调用摄像头并 ...

  2. java 通过手机 实时定位_恒高借助uwb定位技术,让机房复杂问题化繁为简

    ↑↑↑ 点上面蓝字 , 快关注我吧! ●RTLS● 恒高数字机房人员定位系统,采用UWB定位技术,通过在机房内部署一定数量的定位基站,机房巡检人员佩戴标签卡的形式,实时获取人员精确位置,精度高达10c ...

  3. java编程手机gps定位_GPS 获取Gps定位信息的Android源码实例,通过这个JAVA 目,你可能学会GPS在 手机 238万源代码下载- www.pudn.com...

    文件名称: GPS下载 收藏√  [ 5  4  3  2  1 ] 开发工具: Java 文件大小: 59 KB 上传时间: 2013-04-08 下载次数: 22 详细说明:获取Gps定位信息的A ...

  4. java定位线程阻塞_Arthas - 定位 Java 性能问题原来这么简单

    目录: 一.Arthas 介绍 二.Arthas 使用场景 三.Arthas怎么使用 四.Arthas 定位性能问题 定位Java代码导致占用CPU高的问题 线程死锁 前言: 在做性能测试的过程中,当 ...

  5. 一键定位java 线上服务 CPU 100%

    传统方法: top oder by with P:1040 // 首先按进程负载排序找到 axLoad(pid) top -Hp 进程PID:1073 // 找到相关负载 线程PID printf & ...

  6. 用“逐步排除”的方法定位Java服务线上“系统性”故障

    说明:原文地址已经不可访问,其他地方有转载,不过很多丢失图片,所以,找到一处有图的重新配好图. 用"逐步排除"的方法定位Java服务线上"系统性"故障 Post ...

  7. java openmap_地图编辑定位Java OpenStreetMap Editor 10786 免费版

    地图编辑定位Java OpenStreetMap Editor是一个功能强大且比较方便的应用程序,旨在帮助您编辑的地图部分.它使您可以提前对行程计划,例如,并强调需要到达的位置. 实用的外观和直观的使 ...

  8. mat java heap space_Memory Analyzer Tool定位Java heap space内存泄漏

    java heap space是一个很蛋疼的问题,如果开发调试时遇到还好,如果是在项目上线后运行一段时间后,才抛出该异常,那真的很悲剧(那你得找代码中到底是哪里内存泄露了),这真是一个悲伤的故事. 1 ...

  9. java from space to space_快速定位Java 内存OOM的问题

    Java服务出现了OOM(Out Of Memory)问题,总结了一些相对通用的方案,希望能帮助到Java技术栈的同学. 某Java服务(假设PID=10765)出现了OOM,最常见的原因为: 有可能 ...

  10. 通过长期测试定位java服务内存泄漏问题

    目录 一.前言 二.实验说明 三.实验记录 3.1 保存接口-exe部署-pid-1484 3.2 查询接口-exe部署pid-18592 3.3 查询接口-jar部署pid-20048 3.4 服务 ...

最新文章

  1. 教你如何玩转redis-简单消息队列
  2. php代码实现做网络安全的功能,基于PHP关键词审计技巧?网络安全源代码审计
  3. 使用 docker 搭建 web 服务环境
  4. 新建JavaWeb项目
  5. 【MM模块】 Goods Receipt 收货 1
  6. matlab canny边缘,matlab – 定向Canny边缘检测
  7. usnews 计算机专业排名,2019美国大学USNews计算机专业排名
  8. ASP.NET Core 中的错误处理
  9. 城市交通路网(信息学奥赛一本通-T1261)
  10. 粒子群对函数的优化 matlab,编译通过
  11. 大数据shipin教程_大数据全套视频教程完整版
  12. ubuntu16.04安装ros操作系统,解决网络问题
  13. 谈一谈我使用AI得贤招聘官的AI面试体验之旅
  14. 安全测试(BurpSuite)常见检查点
  15. server manager无法打开
  16. div背景 css网格背景_如何为背景图像网格创建运动悬停效果
  17. 37岁,感觉上班太累,可做这5个生意,年轻人看不上,但却挺赚钱
  18. 计算机屏保后无法进入登录界面,Win10锁屏界面无法登录卡在登录状态的应对办法...
  19. RSRP RSRQ RSSI SNR的定义
  20. 情感分析-英文电影评论

热门文章

  1. 聊聊大龄程序员的一条出路
  2. 新医药与生命健康专题讲座
  3. 工作用oracle18c还是11g,Oracle 18c体验
  4. 私有云的优缺点_公有云、私有云、混合云的优缺点
  5. 计算机的外围设备找不到,bluetooth外围设备找不到驱动解决方法
  6. arm9开发板重新生成文件系统,并烧写
  7. 用Affinity画对称纹理
  8. linux蓝牙遥控,蓝牙遥控器连接流程分析
  9. 两种excel 去掉公式保留数值的方法
  10. 世界地图新西兰_世界地图新西兰的位置在哪里?新西兰与澳大利亚相隔多远?...