亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android中使用socket使底層和framework通信的實現(xiàn)方法

 更新時間:2016年11月09日 11:59:03   作者:fanwei51880  
native和framework的通信是通過jni,但是這一般只是framework調用native,native如果有消息要怎樣通知上層 呢?android中GSP模塊提供一種解決思路,但是實現(xiàn)有些復雜,這里介紹一種使用socket通信的方法可以使native和framework自由通信,感興趣的朋友一起看看吧

一般的native和framework的通信是通過jni,但是這一般只是framework調用native,native如果有消息要怎樣通知上層 呢?android中GSP模塊提供一種解決思路,但是實現(xiàn)有些復雜,這里介紹一種使用socket通信的方法可以使native和framework自 由通信,具體實現(xiàn)如下:

android中使用jni對linux中的socket進行了封裝。使用起來十分的方便。

由于android是基于linux的,所以linux的代碼會在java之前先執(zhí)行,所以一般native端是服務器。framework端是客戶端。

java層主要代碼:

view sourceprint?
LocalSocket s =null;
LocalSocketAddress l;
s = new LocalSocket();
l = new LocalSocketAddress(SOCKET_NAME,LocalSocketAddress.Namespace.RESERVED);
s.connect(l);

到此時如果socket連接沒有問題,就可以像正常的讀寫了。

native層主要代碼:

view sourceprint?
s_fdListen = android_get_control_socket(SOCKET_NAME);
ret = listen(s_fdListen, n);
s_fdCommand = accept(s_fdListen, (sockaddr *) &peeraddr, &socklen);

如果連接沒有問題就可以使用linux中的write/read來對socket進行讀和寫了;

這里有必要解釋一下SOCKET_NAME,它的值是一個字符串,它在init.rc中定義的一個字符串。也就是說,我們可以通過修改init.rc中來申請我們需要的socket資源。

這里以ril為例來說明:

service ril-daemon /system/bin/rild 
socket rild stream 660 root radio 
socket rild-debug stream 660 radio system 
user root 
group radio cache inet misc audio

以上是摘自android 2.2 源碼中的system\core\rootdir\init.rc中的片段。至于其具體含義可以參見init.c和system/core/init /readme.txt文件。他的作用是由init.c來解析init.rc,并為我們啟動一個名為rild的守護進程,它是一個可執(zhí)行程序,我們通過 adb shell在system/bin中可以找到對應的rild文件。socket表示為這個守護進程分配一個socket資源,這個socket資源可以在 /dev/socket/下找到rild。也就是本文要這里最關鍵的地方,socket能不能通就看守護進程能不能很好的起來。上面 SOCKET_NAME也就是這里定義的字符串(在ril.java和ril.cpp中就有一個字符串常量SOCKET_NAME_RIL,他的值就是 rild,和上面的對應)。

如果我們要自定義一個socket來進行通信,我們可以在init.rc的最后面加上

service myserver-daemon /system/bin/server 
socket server stream 666 
oneshot

system/bin/server就是我們編譯生成的服務器程序,在里面我們調用

s_fdListen = android_get_control_socket(“server”); 
ret = listen(s_fdListen, n); 
s_fdCommand = accept(s_fdListen, (sockaddr *) &peeraddr, &socklen);

就可以建立一個服務器端程序。

java只需要使用最上面的代碼就可以和native通信了,注意SOCKET_NAME值必須上下統(tǒng)一和init.rc中的相等,此處為“rild”。這里的oneshot必須有,沒有的話,你的server很可能起不來。

剩下的只剩下編譯了。

關于編譯可以參考ril中的中的Android.mk和rild.c和ril.cpp,自己把頭文件挑出即可。

先用mm編譯自己加的模塊,編譯好后,將添加的模塊考出,在源碼的根目錄下make snod。將編譯輸出文件加到system.img中。最后將system.img和randisk.img拷到sdk對應的平臺中。即可。主要這兩個 img文件都要拷,system.img中有你的可執(zhí)行程序,而randisk.img中有你的init.rc。userdata.img不確定。

此時只需要用java寫一個客戶端程序即可。

以上所述是小編給大家介紹的Android中使用socket使底層和framework通信的實現(xiàn)方法 ,實現(xiàn)一個模擬后臺數(shù)據(jù)登入的效果,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

相關文章

  • Android提高之MediaPlayer播放網絡音頻的實現(xiàn)方法

    Android提高之MediaPlayer播放網絡音頻的實現(xiàn)方法

    這篇文章主要介紹了Android的MediaPlayer播放網絡音頻的實現(xiàn)方法,很實用的功能,需要的朋友可以參考下
    2014-08-08
  • Android實現(xiàn)仿慕課網下拉加載動畫

    Android實現(xiàn)仿慕課網下拉加載動畫

    這篇文章是我在做動畫的項目中整理出來的,在eoe看了篇帖子,然后仿慕課網做了一個下拉加載動畫。此功能實現(xiàn)方法是AnimationDrawable類進行 Animation-list中item的循環(huán)遍歷圖片,類似于flash里的幀幀動畫,需要的朋友可以參考下
    2015-07-07
  • android 添加隨意拖動的桌面懸浮窗口

    android 添加隨意拖動的桌面懸浮窗口

    用過新版本android 360手機助手都人都對 360中只在桌面顯示一個小小懸浮窗口羨慕不已吧,本文將介紹此功能的實現(xiàn)步驟,需要了解的朋友可以參考下
    2012-11-11
  • Android 獲取傳感器列表整理及簡單實例

    Android 獲取傳感器列表整理及簡單實例

    這篇文章主要介紹了Android 獲取傳感器列表整理及簡單實例的相關資料,需要的朋友可以參考下
    2017-06-06
  • Android編程之頁面切換測試實例

    Android編程之頁面切換測試實例

    這篇文章主要介紹了Android編程之頁面切換測試,實例分析了Android實現(xiàn)頁面點擊切換的相關技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • Android中獲取IMEI碼的方法

    Android中獲取IMEI碼的方法

    本篇文章是對在Android中獲取IMEI碼的方法進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • android如何獲取聯(lián)系人所有信息

    android如何獲取聯(lián)系人所有信息

    這篇文章主要為大家詳細介紹了android如何獲取聯(lián)系人所有信息,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Android實現(xiàn)音頻條形圖效果

    Android實現(xiàn)音頻條形圖效果

    這篇文章主要為大家詳細介紹了Android實現(xiàn)音頻條形圖效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • DrawerLayout結合Tollbar實現(xiàn)菜單側滑效果

    DrawerLayout結合Tollbar實現(xiàn)菜單側滑效果

    這篇文章主要為大家詳細介紹了DrawerLayout結合Tollbar實現(xiàn)菜單側滑效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • 實戰(zhàn)android打包和簽名

    實戰(zhàn)android打包和簽名

    本篇文章給大家通過實例講解了如何對android項目打包和簽名,并把用到的文件和流程做了注視,需要的朋友參考一下吧。
    2017-12-12

最新評論