日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

java对外sdk提供接口_Android SDK封装,对外提供接口

發布時間:2025/3/15 Android 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java对外sdk提供接口_Android SDK封装,对外提供接口 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

項目中需要把連接服務器的部分做成一個service并生成一個jar模塊。其他產品就可通過這個包來快速的開發連接服務器的應用軟件。做成一個service的優點是:

1. 在后臺運行,可以一直保持與服務器的連接

2. 服務可以只對外提供接口,具體功能在服務內部實現

3. 增加項目代碼的耦合性

打開幾個我使用的第三方sdk的jar包看看:

這是微信的語音識別sdk的jar包的內容

我們一般開發一個sdk當然是定義遠程的service,也就是通過bingservice啟動的方式來啟動的服務。

同時,應用和服務通信的方式有Messenger和aidl,具體區別看別人的文章吧。

我們這里是開發一個sdk,因此選擇了使用aidl,當然如果你的sdk并不包含任何服務,就沒有這回事兒了。

現在以一個例子描述創建一個服務并調用的過程。例子的功能是設置一個數字的值到服務里,然后在從服務里讀出來。主界面用于放置了兩個按鍵用于觸發以上兩個動作,調用的結果在logcat里顯示。

首先創建一個工程,,然后在項目src下面創建一個包,用于放置服務的代碼以及一個包用于放置aidl文件。包內依次放置了服務類和aidl文件。創建完之后,內容如下。

其中CloudServiceInterface.aidl文件內容如下:

packagecom.rayleigh.aidl;

interfaceCloudServiceInterface {

void setInfo(intperson);

int? getInfo();

}

CloudService.java文件文件內容如下:

packagecom.rayleigh.cloud;

importcom.rayleigh.aidl.CloudServiceInterface;

import android.app.Service;

importandroid.content.Intent;

importandroid.os.IBinder;

importandroid.util.Log;

publicclass CloudService extends Service {

private int testdata = 0;

public CloudService() {

}

private static final StringTAG="Test";

@Override

public void onCreate()

{

Log.i(TAG, "ServiceonCreate--->");

//TODO:register broadcast

TODO: 2016/12/18? or start do something

super.onCreate();

}

@Override

public int onStartCommand(Intent intent,int flags, int startId) {

// return super.onStartCommand(intent,flags, startId);

return START_STICKY;

}

@Override

public void onDestroy()

{

Log.i(TAG, "ServiceonDestroy--->");

//TODO: unregister broadcast

super.onDestroy();

}

@Override

public boolean onUnbind(Intent intent) {

Log.i(TAG, "Serviceonunbind--->");

return super.onUnbind(intent);

}

@Override

public void onRebind(Intent intent) {

Log.i(TAG, "Serviceonrebond--->");

super.onRebind(intent);

}

@Override

public IBinder onBind(Intent intent) {

// TODO: Return the communicationchannel to the service.

// throw new UnsupportedOperationException("Notyet implemented");

return mBinder;

}

private final CloudServiceInterface.StubmBinder = new CloudServiceInterface.Stub() {

@Override

public void setInfo(int person)? {

testdata = person;

}

@Override

public int getInfo()?? {

return testdata;

}

};

}

然后點擊project->clean,來編譯項目。就會在gen目錄里生成了CloudServiceInterface.aidl所用對應的CloudServiceInterface.java。如下:

然后在AndroidMannifest.xml里面添加服務聲明:

android:name="com.rayleigh.cloud.CloudService"

android:process=":remote"

>

android:name="com.rayleigh.cloud.CloudService"/>

然后在MainActivity.java里面定義服務對象:

CloudServiceInterfacemService;

private ServiceConnectionserviceConnection =new ServiceConnection() {

@Override

publicvoid onServiceConnected(ComponentName componentName,IBinder iBinder) {

Log.e("on","on service connected");

mService = CloudServiceInterface.Stub.asInterface(iBinder);

}

@Override

publicvoid onServiceDisconnected(ComponentName componentName) {

Log.e("on","on service disconnected");

mService = null;

}

};

然后調用bindService函數啟用服務。我定義成函數如下:

private void connectionToService() {

Intent intent=newIntent(MainActivity.this,CloudService.class);

this.getApplicationContext().bindService(intent,serviceConnection,Context.BIND_AUTO_CREATE);

}

在onCreate里面調用此函數。

最后onCreate里面的內容如下:

@Override

protected void onCreate(BundlesavedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

startBtn = (Button)findViewById(R.id.StartBtn);

stopBtn = (Button) findViewById(R.id.StopBtn);

startBtn.setOnClickListener(listener);

stopBtn.setOnClickListener(listener);

connectionToService();

}

其中按鍵點擊響應函數如下:

private View.OnClickListener listener = newView.OnClickListener()

{

@Override

public void onClick(Viewv)

{

switch (v.getId())

{

case R.id.StartBtn:

if (mService != null){

try {

mService.setInfo(3);

Log.e("mainactivity","setvalue success");

} catch (Exceptione){

}

} else {

Log.e("mainactivity","mServiceis null");

}

break;

case R.id.StopBtn:

if (mService != null){

try {

int a= mService.getInfo();

Log.e("mainactivity","getvalue is :"+ a);

} catch (Exceptione) {

}

} else {

Log.e("mainactivity","mServiceis null");

}

break;

default:

break;

}

}

};

分別點擊兩個按鍵來,設置數字到服務里,和從服務里獲取數據

這個例子很簡單,看代碼就可以了

總結

以上是生活随笔為你收集整理的java对外sdk提供接口_Android SDK封装,对外提供接口的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。