当前位置:首页 » 文件传输 » androidservice上传本地数据
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

androidservice上传本地数据

发布时间: 2022-11-21 10:59:18

1. android 在service中如何向activity传递数据

一种是像楼主所说的,在Activity里注册一个BroadcastReceiver,Service完成某个任务就可以发一个广播,接收器收到广播后通知activity做相应的操作。

另一种是,使用bindService来关联Service和Application,应用.apk里的所有组件一般情况都运行在同一个进程中,所以不需要用到IPC,bindService成功后,Service的Client可以得到Service返回的一个iBinder引用,具体的参见Service的文档及onBind的例子,这样Service的引用就可以通过返回的iBinder对象得到,如
public class LocalService extends Service {
// This is the object that receives interactions from clients. See
// RemoteService for a more complete example.
private final IBinder mBinder = new LocalBinder();

public class LocalBinder extends Binder {
LocalService getService() {
return LocalService.this;
}
}

@Override
public IBinder onBind(Intent intent) {
return mBinder;
}
}

之后Client通过这个iBinder对象得到Service对象引用之后,可以直接和Service通讯,比如读取Service中的值或是调用Service的方法。

2. service怎样把数据传到启动它的Activity中

你是通过bindService还是starService启动的Service?如果是bindService可以在Activity中直接获取到Service的实例,具体用法自己去网上搜bindService如果是starService除了发广播和Handler在android框架层应该是没其他办法了还有这两种方法不太好是什么意思,是你不会用还是怎么的? 别人Google给你提供的四大组件之一的Broadcast就这种情况下用最合适,用起来也很方便,你居然还说不好? 鄙视Google工程师的编程水平吗?

3. 怎么把android gps坐标位置上传到服务器

在配备Android系统的手机中,一般都配备了GPS设备。Android为我们获取GPS数据提供了很好的接口。本文来说一下如何使用Android获取GPS的经纬度。
1 从Service继承一个类。
2 创建startService()方法。
3 创建endService()方法 重载onCreate方法和onDestroy方法,并在这两个方法里面来调用startService以及endService。
4 在startService中,通过getSystemService方法获取Context.LOCATION_SERVICE。
5 基于LocationListener实现一个新类。默认将重载四个方法onLocationChanged、onProviderDisabled、onProviderEnabled、onStatusChanged。对于onLocationChanged方法是我们更新最新的GPS数据的方法。一般我们的操作都只需要在这里进行处理。
6 调用LocationManager的requestLocationUpdates方法,来定期触发获取GPS数据即可。在onLocationChanged函数里面可以实现我们对得到的经纬度的最终操作。
7 最后在我们的Activity里面通过按钮来启动Service,停止Service。
示意代码如下:
package com.offbye.gpsservice;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Binder;
import android.os.IBinder;
import android.util.Log;
public class GPSService extends Service {
// 2000ms
private static final long minTime = 2000;
// 最小变更距离10m
private static final float minDistance = 10;
String tag = this.toString();
private LocationManager locationManager;
private LocationListener locationListener;
private final IBinder mBinder = new GPSServiceBinder();
public void startService() {
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationListener = new GPSServiceListener();
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, minTime, minDistance,
locationListener);
}
public void endService() {
if (locationManager != null && locationListener != null) {
locationManager.removeUpdates(locationListener);
}
}
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return mBinder;
}
@Override
public void onCreate() {
//
startService();
Log.v(tag, "GPSService Started.");
}
@Override
public void onDestroy() {
endService();
Log.v(tag, "GPSService Ended.");
}
public class GPSServiceBinder extends Binder {
GPSService getService() {
return GPSService.this;
}
}
}
GPSServiceListener的实现
package com.offbye.gpsservice;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.TimeZone;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationProvider;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
public class GPSServiceListener implements LocationListener {
private static final String tag = "GPSServiceListener";
private static final float minAccuracyMeters = 35;
private static final String hostUrl = "http://doandroid.info/gpsservice/position.php?";
private static final String user = "huzhangyou";
private static final String pass = "123456";
private static final int ration = 10;
private final DateFormat timestampFormat = new SimpleDateFormat("yyyyMMddHHmmss");
public int GPSCurrentStatus;
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
if (location != null) {
if (location.hasAccuracy() && location.getAccuracy() <= minAccuracyMeters) {
// 获取时间参数,将时间一并Post到服务器端
GregorianCalendar greg = new GregorianCalendar();
TimeZone tz = greg.getTimeZone();
int ffset = tz.getOffset(System.currentTimeMillis());
greg.add(Calendar.SECOND, (offset / 1000) * -1);
StringBuffer strBuffer = new StringBuffer();
strBuffer.append(hostUrl);
strBuffer.append("user=");
strBuffer.append(user);
strBuffer.append("&pass=");
strBuffer.append(pass);
strBuffer.append("&Latitude=");
strBuffer.append(location.getLatitude());
strBuffer.append("&Longitude=");
strBuffer.append(location.getLongitude());
strBuffer.append("&Time=");
strBuffer.append(timestampFormat.format(greg.getTime()));
strBuffer.append("&Speed=");
strBuffer.append(location.hasSpeed());
doGet(strBuffer.toString());
Log.v(tag, strBuffer.toString());
}
}
}
// 将数据通过get的方式发送到服务器,服务器可以根据这个数据进行跟踪用户的行走状态
private void doGet(String string) {
// TODO Auto-generated method stub
//
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
GPSCurrentStatus = status;
}
}
摘自 offbye的技术博客

4. android调用web service上传图片要怎么弄

给一个友好显示,表示正在查询
ajax_start
ajax_end 具体方法名称忘记了大概是这两个意思

5. 如何用Android Service通过aidl传递一个数据流

第一步:部署我们的服务端,也就是Service端:

1:在Service端我先自定义2个类型:Person和Pet。因为我们需要跨进程传递Person对象和Pet对象,所以Person类和Pet类都必须实现Parcelable接口,并要求在实现类中定义一个名为CREATER,类型为Parcelable.creator的静态Field。

代码如下:

这是我Service端的部署情况(其中MainActivity可以不用去实现,因为我们只提供服务,没有窗口显示):

第二步:部署客户端:

1.在客户端新建一个包,命名需要和服务端放置aidl文件的包名相同(我这里是com.example.remoteservice),然后把服务端的Person.java,Pet.java,Person.aidl,Pet.aidl,IPet.aidl复制到这个包下面

2.在activity中绑定远程服务进行数据交换,layout布局和activity代码如下:

1 <RELATIVELAYOUT xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android" tools:context="com.example.remoteclient.RemoteClient" android:paddingtop="@dimen/activity_vertical_margin" android:paddingright="@dimen/activity_horizontal_margin" android:paddingleft="@dimen/activity_horizontal_margin" android:paddingbottom="@dimen/activity_vertical_margin" android:layout_width="match_parent" android:layout_height="match_parent" 9="" 8="" 7="" 6="" 5="" 4="" 3="" 2="">

10

11 <LINEARLAYOUT android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" 14="" 13="" 12="">

15

16 <LINEARLAYOUT android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" 19="" 18="" 17="">

20

21 <EDITTEXT android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom" android:id="@+id/editText_person" android:ems="10" 26="" 25="" 24="" 23="" 22="">

27 </EDITTEXT>

28

29<BUTTON type=submit android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom" android:id="@+id/button_ok" android:text="确定" 34="" 33="" 32="" 31="" 30="">

35

36

37 <LISTVIEW android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/listView_pet" 40="" 39="" 38="">

41 </LISTVIEW>

42

43

44</BUTTON></LINEARLAYOUT></LINEARLAYOUT></RELATIVELAYOUT>


1 package com.example.remoteclient;

2

3 import android.app.Service;

4 import android.content.ComponentName;

5 import android.content.Intent;

6 import android.content.ServiceConnection;

7 import android.os.Bundle;

8 import android.os.IBinder;

9 import android.os.RemoteException;

10 import android.support.v7.app.ActionBarActivity;

11 import android.util.Log;

12 import android.view.View;

13 import android.view.View.OnClickListener;

14 import android.widget.ArrayAdapter;

15 import android.widget.Button;

16 import android.widget.EditText;

17 import android.widget.ListView;

18

19 import com.example.remoteservice.IPet;

20 import com.example.remoteservice.Person;

21 import com.example.remoteservice.Pet;

22

23 import java.util.List;

24

25 public class RemoteClient extends ActionBarActivity {

26

27 public static final String REMOTE_SERVICE_ACTION = com.example.remoteservice.RemoteService.ACTION;

28 EditText editText;

29 Button button;

30 ListView listView;

31

32 IPet petService;// 声明IPet接口

33 List<PET> pets;

34 ServiceConnection conn = new ServiceConnection() {

35

36 @Override

37 public void onServiceDisconnected(ComponentName name) {

38 Log.i(csx, onServiceDisconnected);

39 conn = null;

40 }

41

42 @Override

43 public void onServiceConnected(ComponentName name, IBinder service) {

44 Log.i(csx, onServiceConnected);

45 petService = IPet.Stub.asInterface(service);// 通过远程服务的Binder实现接口

46

47 }

48 };

49

50 @Override

51 protected void onCreate(Bundle savedInstanceState) {

52 super.onCreate(savedInstanceState);

53 setContentView(R.layout.remote_client_layout);

54 editText = (EditText) findViewById(R.id.editText_person);

55 button = (Button) findViewById(R.id.button_ok);

56 listView = (ListView) findViewById(R.id.listView_pet);

57

58 Intent service = new Intent();

59 service.setAction(REMOTE_SERVICE_ACTION);

60

61 bindService(service, conn, Service.BIND_AUTO_CREATE);// 绑定远程服务

62

63 button.setOnClickListener(new OnClickListener() {

64

65 @Override

66 public void onClick(View v) {

67 String personName = editText.getText().toString();

68 if (personName == null || personName.equals()) {

69

70 return;

71 }

72

73 try {

74 pets = petService.getPets(new Person(1, personName, personName));// 调用远程service的getPets方法

75 updataListView();

76

77 } catch (RemoteException e) {

78

79 e.printStackTrace();

80 } catch (NullPointerException e) {

81 e.printStackTrace();

82 }

83

84 }

85 });

86

87 }

88

89 public void updataListView() {

90 listView.setAdapter(null);

91

92 if (pets == null || pets.isEmpty()) {

93 return;

94

95 }

96 ArrayAdapter<PET> adapter = new ArrayAdapter<PET>(RemoteClient.this,

97 android.R.layout.simple_list_item_1, pets);

98 listView.setAdapter(adapter);

99

100 }

101

102 @Override

103 protected void onDestroy() {

104

105 unbindService(conn);// 解除绑定

106 super.onDestroy();

107 }

108

109 }</PET></PET></PET>

到此为止所有的工作都完成了,下面我们看一下效果:我在编辑框中输入“csx”,点击确定,就会显示出服务端RemoteService中pets的相应数据。

6. Android如何在Activity和Service之间传递数据

一个Android程序可以由多个Activity和Servier组成,在这些程序组件之间传递数据的方法有以下几种,每种方法都有其特定的使用途径。
1、原始数据类型:
在Activity/Servier之间传递临时性的原始数据,可以使用Intent的putExtras方法来传递数据。若传递的数据需要长久保存,则使用SharedPreference类来完成。
2、传递对象。
当在Activity/Servier之间传递不需要长久保存的对象时,可以使用以下几种途径:
(1)通过Application类,每个Android应用程序都有一个Application类。当你在程序的AndroidManifest.xml中给Application设定一个名字时,你的程序中就必须有一个Application的子类。这个Application子类会被Android自动实例化,并且是一个全家性的类,它的生命周期和程序的生命周期相同,你可以把一些全局性的对象保存在Application类中。Application类可以通过getApplication()获得。
(2 通过HashMap of WeakReferences传递对象。当一个Activity需要向另外一个Activity传递对象时,可以使用一个关键字把对象存在一个HashMap中,并把这个关键字通过Internt的Extras发给目标Activity,目标Activity接到该关键字后使用该关键字把对象冲HashMap中取出。

7. android怎么同时上传文件和数据

Part[] parts;
文字
parts[i++] = new StringPart(key, value, HTTP.UTF_8);
附件
// parts[i++] = new FilePart(file.getKey(), file.getValue());
// parts[i++] = new FilePart(file.getKey(),
// file.getValue().getName(),
// file.getValue(), null, HTTP.UTF_8);
parts[i++] = new FilePart(file.getKey(), file.getValue().getName(),file.getValue());
上传
httpPost.setEntity(new MultipartEntity(parts, httpPost.getParams()));
去下载开源的StringPart FilePart MultipartEntity

8. android中怎样动态的将数据从service上传递到activity

很多办法,一种是通过BroadCast,由Service发数据,Activity接收,这种比较简单。
另外一种,是在Activity中通过bindService获取到Service对象,直接调用Service方法获取想要的数据,这种方法如果是同一个应用中也是很方便的。
还有一种就是进程间通信,使用aidl,其实也很简单,固定的几步实现。

9. android 中service中进行服务器请求怎么把数据传递给acitivty

你想activity发一个广播,在activity里加入广播接收就可以了

10. Android service传递问题

我只学过java,没学过C;在我的理解范围内,java并没有指针概念。你所说的
class B(Service service) {
mBservice = service;
}
传过去的是一个对象,当service没有被启动的时候,传过去的就是null。当service启动的时候,传过去的是service的一个对象的引用。
也许你真的不该用c的那一套,理解java。java属于面向对象语言,不存在指针。