- 浏览: 5066 次
- 性别:
- 来自: 南京
最近访客 更多访客>>
最新评论
-
yb2008qq:
yb2008qq@163.com
定时发送GPS信息开机启动 -
yb2008qq:
有没完整代码呀?想学习学习
定时发送GPS信息开机启动
主页面
package com.dongqin.cn;
import com.dongqin.cn.service.LocationService;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.StrictMode;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
TextView myTextView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//平板必须添加否则无法联网
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork() // or .detectAll() for all detectable problems
.penaltyLog()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
.detectLeakedClosableObjects()
.penaltyLog()
.penaltyDeath()
.build());
setContentView(R.layout.main);
Intent intent=new Intent();
intent.setClass(MainActivity.this, LocationService.class);
startService(intent);
finish();
Toast.makeText(this, "开始服务", Toast.LENGTH_SHORT).show();
}
}
Service页面
package com.dongqin.cn.service;
import com.dongqin.cn.sendinfo.SendInfo;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
public class LocationService extends Service {
SendInfo send;
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onStart(Intent intent, int startId) {
// TODO Auto-generated method stub
super.onStart(intent, startId);
Intent i = new Intent();
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.setClass(LocationService.this, SendInfo.class);
startActivity(i);
}
@Override
public void onCreate() {
super.onCreate();
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
}
}
发送信息页面
package com.dongqin.cn.sendinfo;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.dongqin.cn.R;
import com.dongqin.cn.soap.SendKsoap;
import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationManager;
import android.location.LocationProvider;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.StrictMode;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;
public class SendInfo extends Activity {
TextView myTextView;
String pcId;
double latitude;
double longitude;
String currentTime;
String fangshi="";
//线程使用
Handler myHandler;
LocationThread myThread;
//
LocationManager locationManager;
SendKsoap ksoap;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//平板上网必加
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork() // or .detectAll() for all detectable problems
.penaltyLog()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
.detectLeakedClosableObjects()
.penaltyLog()
.penaltyDeath()
.build());
setContentView(R.layout.main);
finish();
//开始发送
//通过系统服务,取得LocationManager对象
locationManager=(LocationManager)getSystemService(Context.LOCATION_SERVICE);
startSend();
}
public void startSend()
{
myThread=new LocationThread();
myHandler=new Handler();
myHandler.post(myThread);
}
//获取本身信息
public void getComputerInfo()
{
//指纹
// String fingerprint=android.os.Build.FINGERPRINT.toString();
//ID
pcId=android.os.Build.ID.toString();
}
//位置信息经纬度
public void getLocationInfo()
{
//GPS信号
Location locationGPS = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
//网络GPS信号
Location locationNet = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
//一个特殊的位置提供接收位置,而不会发起一个位置修复。
// 消极的提供者 一个特殊的接受位置信息提供者,没有实际初始化一个固定的位置
Location location = locationManager.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER);
// Log.i("--->location1",""+locationGPS);
// Log.i("--->location2",""+locationNet);
// Log.i("--->location",""+location);
if(locationGPS!=null)
{
fangshi = "GPS";
// 纬度
latitude = locationGPS.getLatitude();
// 经度
longitude = locationGPS.getLongitude();
}else{
if (locationNet != null) {
fangshi = "net";
// 纬度
latitude = locationNet.getLatitude();
// 经度
longitude = locationNet.getLongitude();
} else {
if (location != null) {
fangshi = "PASSIVE";
// 纬度
latitude = location.getLatitude();
// 经度
longitude = location.getLongitude();
} else {
latitude = 0;
longitude = 0;
}
}
}
}
//当前时间信息
public void getCurrentTime()
{
SimpleDateFormat formatter=new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss");
Date curDate=new Date(System.currentTimeMillis());//获取当前时间
currentTime=formatter.format(curDate);
}
//发送消息
public void sendInfo()
{
ksoap=new SendKsoap();
String test=ksoap.sendInfo(pcId,""+latitude,""+longitude, currentTime);
// Log.i("--->ksoap",""+test);
}
//线程每隔几秒调用
public class LocationThread implements Runnable
{
@Override
public void run()
{
// 获取本机信息
getComputerInfo();
// 获得当前时间
getCurrentTime();
// 获取经纬度信息
getLocationInfo();
// 发送消息
sendInfo();
//隔4秒钟调用线程
myHandler.postDelayed(myThread, 4000);
}
}
}
向服务器传值
package com.dongqin.cn.soap;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.AndroidHttpTransport;
import android.util.Log;
public class SendKsoap {
//指定webService的命名空间
private static final String namespace="http://DefaultNamespace";
//调用webService中的方法
private String methodName="test";
//wsdl的webService的IP
private String serviceUrl="http://192.168.1.106:9080/axis/service/DataSynMainService.jws?wsdl";
public String sendInfo(String pcId,String latitude,String longitude,String currentTime)
{
// Log.i("---->ksoap","pcID"+pcId+"latitude"+latitude+"longitude"+longitude+"currentTime"+currentTime);
//创建SoapObject对象,并指定webService的命名空间和方法名
SoapObject soapObject=new SoapObject(namespace,methodName);
//WebService方法的参数
soapObject.addProperty("pcId", pcId);
soapObject.addProperty("latitude", latitude);
soapObject.addProperty("longitude", longitude);
soapObject.addProperty("currentTime", currentTime);
//创建SoapSerializationEnvelope对象,并指定webService的版本
SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11);
//设置bodyOut属性
envelope.bodyOut=soapObject;
//AndroidHttpTransport对象,并指定WSDL文档的URL
AndroidHttpTransport ht=new AndroidHttpTransport(serviceUrl);
try{
//调用WebService的方法
ht.debug=true;
ht.call(null, envelope);
if(envelope.getResponse()!=null)
{
//使用getResponse方法获得WebService返回的结果
SoapObject result=(SoapObject)envelope.bodyIn;
//直接获取方法返回值
String strResult=result.getProperty("testReturn").toString();
// Log.i("--->result",""+strResult);
return strResult;
}
}catch(Exception e)
{
e.printStackTrace();
}
return null;
}
}
开机启动页面
package com.dongqin.cn.receiver;
import com.dongqin.cn.service.LocationService;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
public class LocationReceiver extends BroadcastReceiver
{
//接受Intent的源
static final String ACTION = "android.intent.action.BOOT_COMPLETED";
@Override
public void onReceive(Context context, Intent intent)
{
if (intent.getAction().equals(ACTION))
{
context.startService(
new Intent(context,LocationService.class));
//启动倒计时服务
Toast.makeText(context, "广播服务启动!", Toast.LENGTH_LONG).show();
}
}
}
//manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.dongqin.cn"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="12" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name=".receiver.LocationReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<activity android:name=".sendinfo.SendInfo" />
<service android:name=".service.LocationService" android:enabled="true"/>
</application>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
</manifest>
package com.dongqin.cn;
import com.dongqin.cn.service.LocationService;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.StrictMode;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
TextView myTextView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//平板必须添加否则无法联网
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork() // or .detectAll() for all detectable problems
.penaltyLog()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
.detectLeakedClosableObjects()
.penaltyLog()
.penaltyDeath()
.build());
setContentView(R.layout.main);
Intent intent=new Intent();
intent.setClass(MainActivity.this, LocationService.class);
startService(intent);
finish();
Toast.makeText(this, "开始服务", Toast.LENGTH_SHORT).show();
}
}
Service页面
package com.dongqin.cn.service;
import com.dongqin.cn.sendinfo.SendInfo;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
public class LocationService extends Service {
SendInfo send;
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onStart(Intent intent, int startId) {
// TODO Auto-generated method stub
super.onStart(intent, startId);
Intent i = new Intent();
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.setClass(LocationService.this, SendInfo.class);
startActivity(i);
}
@Override
public void onCreate() {
super.onCreate();
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
}
}
发送信息页面
package com.dongqin.cn.sendinfo;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.dongqin.cn.R;
import com.dongqin.cn.soap.SendKsoap;
import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationManager;
import android.location.LocationProvider;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.StrictMode;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;
public class SendInfo extends Activity {
TextView myTextView;
String pcId;
double latitude;
double longitude;
String currentTime;
String fangshi="";
//线程使用
Handler myHandler;
LocationThread myThread;
//
LocationManager locationManager;
SendKsoap ksoap;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//平板上网必加
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork() // or .detectAll() for all detectable problems
.penaltyLog()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
.detectLeakedClosableObjects()
.penaltyLog()
.penaltyDeath()
.build());
setContentView(R.layout.main);
finish();
//开始发送
//通过系统服务,取得LocationManager对象
locationManager=(LocationManager)getSystemService(Context.LOCATION_SERVICE);
startSend();
}
public void startSend()
{
myThread=new LocationThread();
myHandler=new Handler();
myHandler.post(myThread);
}
//获取本身信息
public void getComputerInfo()
{
//指纹
// String fingerprint=android.os.Build.FINGERPRINT.toString();
//ID
pcId=android.os.Build.ID.toString();
}
//位置信息经纬度
public void getLocationInfo()
{
//GPS信号
Location locationGPS = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
//网络GPS信号
Location locationNet = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
//一个特殊的位置提供接收位置,而不会发起一个位置修复。
// 消极的提供者 一个特殊的接受位置信息提供者,没有实际初始化一个固定的位置
Location location = locationManager.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER);
// Log.i("--->location1",""+locationGPS);
// Log.i("--->location2",""+locationNet);
// Log.i("--->location",""+location);
if(locationGPS!=null)
{
fangshi = "GPS";
// 纬度
latitude = locationGPS.getLatitude();
// 经度
longitude = locationGPS.getLongitude();
}else{
if (locationNet != null) {
fangshi = "net";
// 纬度
latitude = locationNet.getLatitude();
// 经度
longitude = locationNet.getLongitude();
} else {
if (location != null) {
fangshi = "PASSIVE";
// 纬度
latitude = location.getLatitude();
// 经度
longitude = location.getLongitude();
} else {
latitude = 0;
longitude = 0;
}
}
}
}
//当前时间信息
public void getCurrentTime()
{
SimpleDateFormat formatter=new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss");
Date curDate=new Date(System.currentTimeMillis());//获取当前时间
currentTime=formatter.format(curDate);
}
//发送消息
public void sendInfo()
{
ksoap=new SendKsoap();
String test=ksoap.sendInfo(pcId,""+latitude,""+longitude, currentTime);
// Log.i("--->ksoap",""+test);
}
//线程每隔几秒调用
public class LocationThread implements Runnable
{
@Override
public void run()
{
// 获取本机信息
getComputerInfo();
// 获得当前时间
getCurrentTime();
// 获取经纬度信息
getLocationInfo();
// 发送消息
sendInfo();
//隔4秒钟调用线程
myHandler.postDelayed(myThread, 4000);
}
}
}
向服务器传值
package com.dongqin.cn.soap;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.AndroidHttpTransport;
import android.util.Log;
public class SendKsoap {
//指定webService的命名空间
private static final String namespace="http://DefaultNamespace";
//调用webService中的方法
private String methodName="test";
//wsdl的webService的IP
private String serviceUrl="http://192.168.1.106:9080/axis/service/DataSynMainService.jws?wsdl";
public String sendInfo(String pcId,String latitude,String longitude,String currentTime)
{
// Log.i("---->ksoap","pcID"+pcId+"latitude"+latitude+"longitude"+longitude+"currentTime"+currentTime);
//创建SoapObject对象,并指定webService的命名空间和方法名
SoapObject soapObject=new SoapObject(namespace,methodName);
//WebService方法的参数
soapObject.addProperty("pcId", pcId);
soapObject.addProperty("latitude", latitude);
soapObject.addProperty("longitude", longitude);
soapObject.addProperty("currentTime", currentTime);
//创建SoapSerializationEnvelope对象,并指定webService的版本
SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11);
//设置bodyOut属性
envelope.bodyOut=soapObject;
//AndroidHttpTransport对象,并指定WSDL文档的URL
AndroidHttpTransport ht=new AndroidHttpTransport(serviceUrl);
try{
//调用WebService的方法
ht.debug=true;
ht.call(null, envelope);
if(envelope.getResponse()!=null)
{
//使用getResponse方法获得WebService返回的结果
SoapObject result=(SoapObject)envelope.bodyIn;
//直接获取方法返回值
String strResult=result.getProperty("testReturn").toString();
// Log.i("--->result",""+strResult);
return strResult;
}
}catch(Exception e)
{
e.printStackTrace();
}
return null;
}
}
开机启动页面
package com.dongqin.cn.receiver;
import com.dongqin.cn.service.LocationService;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
public class LocationReceiver extends BroadcastReceiver
{
//接受Intent的源
static final String ACTION = "android.intent.action.BOOT_COMPLETED";
@Override
public void onReceive(Context context, Intent intent)
{
if (intent.getAction().equals(ACTION))
{
context.startService(
new Intent(context,LocationService.class));
//启动倒计时服务
Toast.makeText(context, "广播服务启动!", Toast.LENGTH_LONG).show();
}
}
}
//manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.dongqin.cn"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="12" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name=".receiver.LocationReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<activity android:name=".sendinfo.SendInfo" />
<service android:name=".service.LocationService" android:enabled="true"/>
</application>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
</manifest>
- ksoap2-android-assembly-2.4-jar-with-dependencies.jar (137.8 KB)
- 描述: ksoap的jar包
- 下载次数: 10
相关推荐
然而,在某些情况下,例如设备首次开机或者长时间未使用后重新启动时,GPS定位可能会出现延迟现象,这直接影响了用户体验。为此,许多技术团队都在研究如何提高GPS的定位速度,其中一种解决方案就是AssistNow™ A-...
单片机通过串口接收GPS发送的信息,解析其中的日期和时间数据。如果GPS时间与DS1302时间不一致,单片机会更新DS1302的时间,确保时间的准确性。此外,系统还具备语音报时功能,使用ISD4004语音芯片存储预设的语音...
该记录仪具备智能定位功能,使用GPRS方式发送GPS数据到指定网站。操作简便,上电后自动开机,断电后自动关机。正常工作时,红色电源指示灯闪烁,蓝色GPS指示灯常亮,绿色GSM指示灯常亮。如果指示灯闪烁或不亮,可能...
- GPS冷启动首次获星时间为26秒,热启动时间为1秒。 - 支持AGPS(辅助GPS)。 - 尺寸为35mm×25mm×2.7mm。 - 工作温度范围为-40℃至+80℃。 - 工作电压范围为3.3V至4.5V(推荐使用3.8V)。 - 支持CCC认证。 ...
- **开机自启动**:为了让应用程序能够在后台持续运行,需要在安装后配置为开机自启动模式,以确保即使在手机重启后也能继续工作。 - **权限设置**:由于涉及GPS定位和后台运行等功能,因此需要获取用户的权限授权。...
1. 开机后,无线发射器每隔一定时间发送无线信号,单片机、GPS模块和GSM模块开始工作。 2. 单片机不断检测无线信号,如果检测到车主在车附近(无线信号接收),则重新开始信号检验程序;反之,如果在设定时间内未...
- **TTFF (Time To First Fix)**:首次定位时间,即设备从开机到获得首个有效位置的时间。 - **灵敏度**:衡量设备在微弱信号环境下工作的能力。 - **精度**:指位置信息的准确性。 - **GPS天线规格(推荐)**:给出...
在Linux系统中,可以使用"chrony"或"ntpd"(Network Time Protocol Daemon)服务,同样可以通过修改配置文件设置开机启动和服务器地址。 在提到的"TimerSyncIntelnet"可能是一个软件或脚本,用于在Windows环境中...
此外,应用程序需具备开机自启动功能,并以后台服务的形式运行,在特定时间间隔内自动发送数据。在客户端,用户可以通过登录验证后查看到手机的历史运行轨迹,从而达到远程监控的目的。 #### 二、关键技术与实现...
* 启动时间:冷启动 60 秒、热启动 3 秒 * 定位精度:10米 * 速度精度:0.3米/秒 * GSM性能:频率 GSM 900/1800,最大发射功率:1W * 整机主要技术参数:整机尺寸 75mm× 52mm× 20mm,工作电压 9V ~30V,最大工作...
3. **快捷登录**:GPRS终端开机后即可快速附着到网络上,启动过程短,一般只需几秒钟。 4. **高速传输**:理论上最大数据传输速率可达171.2 kbit/s,虽然实际速度受到多种因素的影响,但仍远高于传统的电路交换技术...
3. **开机画面**:开机画面是设备启动时显示的图像,可以是品牌标志或者定制的信息。在凯立德导航系统中,用户可能希望自定义开机画面以展现个性化风格或提升用户体验。 4. **显示方式**:这可能包括屏幕分辨率、...
GPS 信号的近似的多普勒频偏,A-GPS 服务器将多普勒频偏信息发送给其他手持 GPS 接收机,这样手持 GPS 接收机的搜索空间大大减少,只对很少的几个频率区(Frequency bins)进行搜索,首次定位时间(TTFF)也就可以...
**BSS-3 GPS卫星同步时钟**是一款专为电力系统设计的标准时间显示与发送装置,利用全球定位系统(GPS)技术来实现精准的时间同步。GPS是由美国政府运营的全球卫星导航系统,包括了24颗卫星和地面控制站。地球上任何...
启动服务的命令通常是`sudo systemctl start ntpd`,并且可以设置为开机自启。 3. **`w32time`**:在Windows系统中,可以使用`w32tm`命令行工具配置和同步时间。通过`w32tm /config /manualpeerlist:IP /...
实时定位是利用GPS获取当前位置,包括时间和电池电压等实时信息。若1分钟内无法实现实时定位,设备会使用最近的成功定位信息作为当前上报的位置,这种情况下称为GPS历史定位。 智能定位模式分为运动状态和静止状态...
在Android系统中,后台服务(Service)是一种可以长时间运行而不提供用户界面的组件,它对于实现应用程序在后台执行任务,如音乐播放、定时任务、数据同步等非常关键。特别是对于定位功能,Android后台服务能够允许...
3. **全网普查**:服务器可以设定特定时间发送指令,让所有安装了数据采集程序的手机同时报告其网络状态和使用情况。这包括空闲状态下的网络参数和GPS信息,以及使用状态下的网络参数、使用项(通话、短信、彩信、...