當前位置:首頁 » 文件傳輸 » 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屬於面向對象語言,不存在指針。