锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久久久亚洲AV综合波多野结衣,久久亚洲高清综合,久久综合九色综合欧美狠狠http://www.shnenglu.com/iuranus/category/11397.html<br><font color="#ADFF2F">Something Different錛孲omething New</font>zh-cnFri, 12 Sep 2014 18:31:09 GMTFri, 12 Sep 2014 18:31:09 GMT60(杞?鍐呭瓨婧㈠嚭鐨勮В鍐沖姙娉?Androidhttp://www.shnenglu.com/iuranus/archive/2010/08/23/124394.html鏀鍗?/dc:creator>鏀鍗?/author>Mon, 23 Aug 2010 04:26:00 GMThttp://www.shnenglu.com/iuranus/archive/2010/08/23/124394.htmlhttp://www.shnenglu.com/iuranus/comments/124394.htmlhttp://www.shnenglu.com/iuranus/archive/2010/08/23/124394.html#Feedback1http://www.shnenglu.com/iuranus/comments/commentRss/124394.htmlhttp://www.shnenglu.com/iuranus/services/trackbacks/124394.html鏄ㄥぉ鍦ㄦā鎷熷櫒涓婄粰gallery鏀懼叆鍥劇墖鐨勬椂鍊欙紝鍑虹幇java.lang.OutOfMemoryError: bitmap size exceeds VM budget 寮傚父錛屽浘鍍忓ぇ灝忚秴榪囦簡RAM鍐呭瓨銆?/span>
      妯℃嫙鍣≧AM姣旇緝灝忥紝鍙湁8M鍐呭瓨錛屽綋鎴戞斁鍏ョ殑澶ч噺鐨勫浘鐗囷紙姣忎釜100澶欿宸﹀彸錛夛紝灝卞嚭鐜頒笂闈㈢殑鍘熷洜銆傜敱浜庢瘡寮犲浘鐗囧厛鍓嶆槸鍘嬬緝鐨勬儏鍐點傛斁鍏ュ埌Bitmap鐨勬椂鍊欙紝澶у皬浼氬彉澶э紝瀵艱嚧瓚呭嚭RAM鍐呭瓨錛屽叿浣撹В鍐沖姙娉曞涓嬶細

//瑙e喅鍔犺澆鍥劇墖 鍐呭瓨婧㈠嚭鐨勯棶棰?/span>
                    //Options 鍙繚瀛樺浘鐗囧昂瀵稿ぇ灝忥紝涓嶄繚瀛樺浘鐗囧埌鍐呭瓨
                BitmapFactory.Options opts = new BitmapFactory.Options();
                //緙╂斁鐨勬瘮渚嬶紝緙╂斁鏄緢闅炬寜鍑嗗鐨勬瘮渚嬭繘琛岀緝鏀劇殑錛屽叾鍊艱〃鏄庣緝鏀劇殑鍊嶆暟錛孲DK涓緩璁叾鍊兼槸2鐨勬寚鏁板?鍊艱秺澶т細瀵艱嚧鍥劇墖涓嶆竻鏅?/span>
                opts.inSampleSize = 4;
                Bitmap bmp = null;
                bmp = BitmapFactory.decodeResource(getResources(), mImageIds[position],opts);                              
                ...               
               //鍥炴敹
                bmp.recycle();

閫氳繃涓婇潰鐨勬柟寮忚В鍐充簡錛屼絾鏄繖騫朵笉鏄渶瀹岀編鐨勮В鍐蟲柟寮忋?/span>

閫氳繃涓浜涗簡瑙o紝寰楃煡濡備笅錛?/span>

浼樺寲Dalvik铏氭嫙鏈虹殑鍫嗗唴瀛樺垎閰?/span>

瀵逛簬Android騫沖彴鏉ヨ錛屽叾鎵樼灞備嬌鐢ㄧ殑Dalvik Java VM浠庣洰鍓嶇殑琛ㄧ幇鏉ョ湅榪樻湁寰堝鍦版柟鍙互浼樺寲澶勭悊錛屾瘮濡傛垜浠湪寮鍙戜竴浜涘ぇ鍨嬫父鎴忔垨鑰楄祫婧愮殑搴旂敤涓彲鑳借冭檻鎵嬪姩騫叉秹GC澶勭悊錛屼嬌鐢?dalvik.system.VMRuntime綾繪彁渚涚殑setTargetHeapUtilization鏂規硶鍙互澧炲己紼嬪簭鍫嗗唴瀛樼殑澶勭悊鏁堢巼銆傚綋鐒跺叿浣?鍘熺悊鎴戜滑鍙互鍙傝冨紑婧愬伐紼嬶紝榪欓噷鎴戜滑浠呰涓嬩嬌鐢ㄦ柟娉?   private final static float TARGET_HEAP_UTILIZATION = 0.75f; 鍦ㄧ▼搴弌nCreate鏃跺氨鍙互璋冪敤 VMRuntime.getRuntime().setTargetHeapUtilization(TARGET_HEAP_UTILIZATION); 鍗沖彲銆?/span> 

Android鍫嗗唴瀛樹篃鍙嚜宸卞畾涔夊ぇ灝?/span>

    瀵逛簬涓浜汚ndroid欏圭洰錛屽獎鍝嶆ц兘鐡墮鐨勪富瑕佹槸Android鑷繁鍐呭瓨綆$悊鏈哄埗闂錛岀洰鍓嶆墜鏈哄巶鍟嗗RAM閮芥瘮杈冨悵鍟紝瀵逛簬杞歡鐨勬祦鐣呮ф潵璇碦AM瀵?鎬ц兘鐨勫獎鍝嶅崄鍒嗘晱鎰燂紝闄や簡 浼樺寲Dalvik铏氭嫙鏈虹殑鍫嗗唴瀛樺垎閰嶅錛屾垜浠繕鍙互寮哄埗瀹氫箟鑷繁杞歡鐨勫鍐呭瓨澶у皬錛屾垜浠嬌鐢―alvik鎻愪緵鐨?dalvik.system.VMRuntime綾繪潵璁劇疆鏈灝忓爢鍐呭瓨涓轟緥:

private final static int CWJ_HEAP_SIZE = 6* 1024* 1024 ;

VMRuntime.getRuntime().setMinimumHeapSize(CWJ_HEAP_SIZE); //璁劇疆鏈灝廻eap鍐呭瓨涓?MB澶у皬銆傚綋鐒跺浜庡唴瀛樺悆绱ф潵璇磋繕鍙互閫氳繃鎵嬪姩騫叉秹GC鍘誨鐞?/span>

]]>
錛堣漿錛塇ttpClient鍩虹 http://www.shnenglu.com/iuranus/archive/2010/07/04/119311.html鏀鍗?/dc:creator>鏀鍗?/author>Sun, 04 Jul 2010 12:50:00 GMThttp://www.shnenglu.com/iuranus/archive/2010/07/04/119311.htmlhttp://www.shnenglu.com/iuranus/comments/119311.htmlhttp://www.shnenglu.com/iuranus/archive/2010/07/04/119311.html#Feedback1http://www.shnenglu.com/iuranus/comments/commentRss/119311.htmlhttp://www.shnenglu.com/iuranus/services/trackbacks/119311.html闃呰鍏ㄦ枃

]]>
(杞? AIDL --- Android涓殑榪滅▼鎺ュ彛http://www.shnenglu.com/iuranus/archive/2009/08/12/93040.html鏀鍗?/dc:creator>鏀鍗?/author>Wed, 12 Aug 2009 09:17:00 GMThttp://www.shnenglu.com/iuranus/archive/2009/08/12/93040.htmlhttp://www.shnenglu.com/iuranus/comments/93040.htmlhttp://www.shnenglu.com/iuranus/archive/2009/08/12/93040.html#Feedback0http://www.shnenglu.com/iuranus/comments/commentRss/93040.htmlhttp://www.shnenglu.com/iuranus/services/trackbacks/93040.html AIDL --- Android涓殑榪滅▼鎺ュ彛
http://labs.chinamobile.com/community/my_blog/517/4850

    鍦ˋndroid涓? 姣忎釜搴旂敤紼嬪簭閮藉彲浠ユ湁鑷繁鐨勮繘紼? 鍦ㄥ啓UI搴旂敤鐨勬椂鍊? 緇忓父瑕佺敤鍒癝ervice. 鍦ㄤ笉鍚岀殑榪涚▼涓? 鎬庢牱浼犻掑璞″憿?  鏄劇劧, Java涓笉鍏佽璺ㄨ繘紼嬪唴瀛樺叡浜? 鍥犳浼犻掑璞? 鍙兘鎶婂璞℃媶鍒嗘垚鎿嶄綔緋葷粺鑳界悊瑙g殑綆鍗曞艦寮? 浠ヨ揪鍒拌法鐣屽璞¤闂殑鐩殑. 鍦↗2EE涓?閲囩敤RMI鐨勬柟寮? 鍙互閫氳繃搴忓垪鍖栦紶閫掑璞? 鍦ˋndroid涓? 鍒欓噰鐢ˋIDL鐨勬柟寮? 鐞嗚涓夾IDL鍙互浼犻払undle,瀹為檯涓婂仛璧鋒潵鍗存瘮杈冮夯鐑?

AIDL(AndRoid鎺ュ彛鎻忚堪璇█)鏄竴縐嶅熷彛鎻忚堪璇█; 緙栬瘧鍣ㄥ彲浠ラ氳繃aidl鏂囦歡鐢熸垚涓孌典唬鐮侊紝閫氳繃棰勫厛瀹氫箟鐨勬帴鍙h揪鍒頒袱涓繘紼嬪唴閮ㄩ氫俊榪涚▼鐨勭洰鐨? 濡傛灉闇瑕佸湪涓涓狝ctivity涓? 璁塊棶鍙︿竴涓猄ervice涓殑鏌愪釜瀵硅薄, 闇瑕佸厛灝嗗璞¤漿鍖栨垚AIDL鍙瘑鍒殑鍙傛暟(鍙兘鏄涓弬鏁?, 鐒跺悗浣跨敤AIDL鏉ヤ紶閫掕繖浜涘弬鏁? 鍦ㄦ秷鎭殑鎺ユ敹绔? 浣跨敤榪欎簺鍙傛暟緇勮鎴愯嚜宸遍渶瑕佺殑瀵硅薄.

AIDL鐨処PC鐨勬満鍒跺拰COM鎴朇ORBA綾諱技, 鏄熀浜庢帴鍙g殑錛屼絾瀹冩槸杞婚噺綰х殑銆傚畠浣跨敤浠g悊綾誨湪瀹㈡埛绔拰瀹炵幇灞傞棿浼犻掑? 濡傛灉瑕佷嬌鐢ˋIDL, 闇瑕佸畬鎴?浠朵簨鎯? 1. 寮曞叆AIDL鐨勭浉鍏崇被.; 2. 璋冪敤aidl浜х敓鐨刢lass.

鍏蜂綋瀹炵幇姝ラ濡備笅:

1銆佸垱寤篈IDL鏂囦歡, 鍦ㄨ繖涓枃浠墮噷闈㈠畾涔夋帴鍙? 璇ユ帴鍙e畾涔変簡鍙緵瀹㈡埛绔闂殑鏂規硶鍜屽睘鎬с?濡? ITaskBinder.adil

package com.cmcc.demo;

 

import com.cmcc.demo.ITaskCallback;

 

interface ITaskBinder {

   

    boolean isTaskRunning();

       

    void stopRunningTask();   

   

    void registerCallback(ITaskCallback cb);   

  

    void unregisterCallback(ITaskCallback cb);

}

鍏朵腑: ITaskCallback鍦ㄦ枃浠禝TaskCallback.aidl涓畾涔?

package com.cmcc.demo;

 

interface ITaskCallback {

    void actionPerformed(int actionId);

}

娉ㄦ剰: 鐞嗚涓? 鍙傛暟鍙互浼犻掑熀鏈暟鎹被鍨嬪拰String, 榪樻湁灝辨槸Bundle鐨勬淳鐢熺被, 涓嶈繃鍦‥clipse涓?鐩墠鐨凙DT涓嶆敮鎸丅undle鍋氫負鍙傛暟, 鎹鐢ˋnt緙栬瘧鍙互, 鎴戞病鍋氬皾璇?

2銆佺紪璇慉IDL鏂囦歡, 鐢ˋnt鐨勮瘽, 鍙兘闇瑕佹墜鍔? 浣跨敤Eclipse plugin鐨勮瘽,鍙互鏍規嵁adil鏂囦歡鑷姩鐢熶駭java鏂囦歡騫剁紪璇? 涓嶉渶瑕佷漢涓轟粙鍏?

3銆佸湪Java鏂囦歡涓? 瀹炵幇AIDL涓畾涔夌殑鎺ュ彛. 緙栬瘧鍣ㄤ細鏍規嵁AIDL鎺ュ彛, 浜х敓涓涓狫AVA鎺ュ彛銆傝繖涓帴鍙f湁涓涓悕涓篠tub鐨勫唴閮ㄦ娊璞$被錛屽畠緇ф壙鎵╁睍浜嗘帴鍙e茍瀹炵幇浜嗚繙紼嬭皟鐢ㄩ渶瑕佺殑鍑犱釜鏂規硶銆傛帴涓嬫潵灝遍渶瑕佽嚜宸卞幓瀹炵幇鑷畾涔夌殑鍑犱釜鎺ュ彛浜?

ITaskBinder.aidl涓帴鍙g殑瀹炵幇, 鍦∕yService.java涓帴鍙d互鍐呭祵綾葷殑鏂瑰紡瀹炵幇:

private final ITaskBinder.Stub mBinder = new ITaskBinder.Stub() {

        public void stopRunningTask() {

            //@TODO

        }

       

        public boolean isTaskRunning() {

            //@TODO

            return false;

        }

       

        public void registerCallback(ITaskCallback cb) {

            if (cb != null) mCallbacks.register(cb);

        }

        public void unregisterCallback(ITaskCallback cb) {

            if (cb != null) mCallbacks.unregister(cb);

        }

};

鍦∕yActivity.java涓璉TaskCallback.aidl鎺ュ彛瀹炵幇:

private ITaskCallback mCallback = new ITaskCallback.Stub() {

        public void actionPerformed(int id) {

           //TODO

            printf("callback id=" + id);

        }

};

4銆佸悜瀹㈡埛绔彁渚涙帴鍙TaskBinder, 濡傛灉鍐欑殑鏄痵ervice錛屾墿灞曡Service騫墮噸杞給nBind ()鏂規硶鏉ヨ繑鍥炰竴涓疄鐜頒笂榪版帴鍙g殑綾葷殑瀹炰緥銆傝繖涓湴鏂硅繑鍥炵殑mBinder,灝辨槸涓婇潰閫氳繃鍐呭祵浜嗗畾涔夌殑閭d釜. (MyService.java)

    public IBinder onBind(Intent t) {

        printf("service on bind");

        return mBinder;

}

鍦ˋctivity涓? 鍙互閫氳繃Binder瀹氫箟鐨勬帴鍙? 鏉ヨ繘琛岃繙紼嬭皟鐢?

5銆佸湪鏈嶅姟鍣ㄧ鍥炶皟瀹㈡埛绔殑鍑芥暟. 鍓嶆彁鏄綋瀹㈡埛绔幏鍙栫殑IBinder鎺ュ彛鐨勬椂鍊?瑕佸幓娉ㄥ唽鍥炶皟鍑芥暟, 鍙湁榪欐牱, 鏈嶅姟鍣ㄧ鎵嶇煡閬撹璋冪敤閭d簺鍑芥暟鍦?MyService.java涓?

    void callback(int val) {

        final int N = mCallbacks.beginBroadcast();

        for (int i=0; i<N; i++) {

            try {

                mCallbacks.getBroadcastItem(i).actionPerformed(val);

            } catch (RemoteException e) {

                // The RemoteCallbackList will take care of removing

                // the dead object for us.

            }

        }

        mCallbacks.finishBroadcast();

}

AIDL鐨勫垱寤烘柟娉?

AIDL璇硶寰堢畝鍗?鍙互鐢ㄦ潵澹版槑涓涓甫涓涓垨澶氫釜鏂規硶鐨勬帴鍙o紝涔熷彲浠ヤ紶閫掑弬鏁板拰榪斿洖鍊箋? 鐢變簬榪滅▼璋冪敤鐨勯渶瑕? 榪欎簺鍙傛暟鍜岃繑鍥炲煎茍涓嶆槸浠諱綍綾誨瀷.涓嬮潰鏄簺AIDL鏀寔鐨勬暟鎹被鍨?

1. 涓嶉渶瑕乮mport澹版槑鐨勭畝鍗旿ava緙栫▼璇█綾誨瀷(int,boolean絳?

2. String, CharSequence涓嶉渶瑕佺壒孌婂0鏄?/strong>
 
3. List, Map鍜孭arcelables綾誨瀷, 榪欎簺綾誨瀷鍐呮墍鍖呭惈鐨勬暟鎹垚鍛樹篃鍙兘鏄畝鍗曟暟鎹被鍨? String絳夊叾浠栨瘮鏀寔鐨勭被鍨? 
(
(鍙﹀: 鎴戞病灝濊瘯Parcelables, 鍦‥clipse+ADT涓嬬紪璇戜笉榪? 鎴栬浠ュ悗浼氭湁鎵鏀寔).
涓嬮潰鏄疉IDL璇硶:
 // 鏂囦歡鍚? SomeClass.aidl
 // 鏂囦歡鍙互鏈夋敞閲? 璺焜ava鐨勪竴鏍?/strong>
 // 鍦╬ackage浠ュ墠鐨勬敞閲? 灝嗕細琚拷鐣?
 // 鍑芥暟鍜屽彉閲忎互鍓嶇殑娉ㄩ噴, 閮戒細琚姞鍏ュ埌鐢熶駭java浠g爜涓?
package com.cmcc.demo;
 // import 寮曞叆璇彞

import com.cmcc.demo.ITaskCallback;

 

interface ITaskBinder {

    //鍑芥暟璺焜ava涓鏍? 鍙互鏈?鍒板涓弬鏁?,鍙互鏈変竴涓繑鍥炲?/strong>

    boolean isTaskRunning();

       

    void stopRunningTask();   

    //鍙傛暟鍙互鏄彟澶栫殑涓涓猘idl瀹氫箟鐨勬帴鍙?/strong>

    void registerCallback(ITaskCallback cb);   

  

void unregisterCallback(ITaskCallback cb);

//鍙傛暟鍙互鏄疭tring, 鍙互鐢╥n琛ㄥ叆杈撳叆綾誨瀷, out琛ㄧず杈撳嚭綾誨瀷.

int getCustomerList(in String branch, out String[] customerList);

 

} 

瀹炵幇鎺ュ彛鏃舵湁鍑犱釜鍘熷垯:

.鎶涘嚭鐨勫紓甯鎬笉瑕佽繑鍥炵粰璋冪敤鑰? 璺ㄨ繘紼嬫姏寮傚父澶勭悊鏄笉鍙彇鐨?
.IPC璋冪敤鏄悓姝ョ殑銆傚鏋滀綘鐭ラ亾涓涓狪PC鏈嶅姟闇瑕佽秴榪囧嚑姣鐨勬椂闂存墠鑳藉畬鎴愬湴璇濓紝浣犲簲璇ラ伩鍏嶅湪Activity鐨勪富綰跨▼涓皟鐢ㄣ?涔熷氨鏄疘PC璋冪敤浼氭寕璧峰簲鐢ㄧ▼搴忓鑷寸晫闈㈠け鍘誨搷搴? 榪欑鎯呭喌搴旇鑰冭檻鍗曡搗涓涓嚎紼嬫潵澶勭悊.
.涓嶈兘鍦ˋIDL鎺ュ彛涓0鏄庨潤鎬佸睘鎬с?/strong>

IPC鐨勮皟鐢ㄦ楠?

 1. 澹版槑涓涓帴鍙g被鍨嬬殑鍙橀噺錛岃鎺ュ彛綾誨瀷鍦?aidl鏂囦歡涓畾涔夈?/strong>
 2. 瀹炵幇ServiceConnection銆?/strong>
 3. 璋冪敤ApplicationContext.bindService(),騫跺湪ServiceConnection瀹炵幇涓繘琛屼紶閫? 
 4. 鍦⊿erviceConnection.onServiceConnected()瀹炵幇涓紝浣犱細鎺ユ敹涓涓狪Binder瀹炰緥(琚皟鐢ㄧ殑Service). 璋冪敤
    YourInterfaceName.Stub.asInterface((IBinder)service)灝嗗弬鏁拌漿鎹負YourInterface綾誨瀷銆?/strong>
 5. 璋冪敤鎺ュ彛涓畾涔夌殑鏂規硶銆?浣犳昏媯嫻嬪埌DeadObjectException寮傚父錛岃寮傚父鍦ㄨ繛鎺ユ柇寮鏃惰鎶涘嚭銆傚畠鍙細琚繙紼嬫柟娉曟姏鍑恒?/strong>
 6. 鏂紑榪炴帴錛岃皟鐢ㄦ帴鍙e疄渚嬩腑鐨凙pplicationContext.unbindService()

 

涓嬮潰鏄暣涓▼搴?

1. ITaskCallback.aidl

 

package com.cmcc.demo;

 

interface ITaskCallback {

    void actionPerformed(int actionId);

}

 

2. ITaskBinder.aidl

package com.cmcc.demo;

 

import com.cmcc.demo.ITaskCallback;

 

interface ITaskBinder {

   

    boolean isTaskRunning();

       

    void stopRunningTask();   

   

    void registerCallback(ITaskCallback cb);   

  

    void unregisterCallback(ITaskCallback cb);

}

 

3.  MyService.java

package com.cmcc.demo;

 

import android.app.Service;

import android.content.Intent;

import android.os.IBinder;

import android.os.RemoteCallbackList;

import android.os.RemoteException;

import android.util.Log;

 

public class MyService extends Service {

       

    @Override

    public void onCreate() {

        printf("service create");

    }

   

    @Override

    public void onStart(Intent intent, int startId) {

        printf("service start id=" + startId);

        callback(startId);

    }

   

    @Override

    public IBinder onBind(Intent t) {

        printf("service on bind");

        return mBinder;

    }

   

    @Override

    public void onDestroy() {

        printf("service on destroy");

        super.onDestroy();

    }

 

    @Override

    public boolean onUnbind(Intent intent) {

        printf("service on unbind");

        return super.onUnbind(intent);

    }

   

    public void onRebind(Intent intent) {

        printf("service on rebind");

        super.onRebind(intent);

    }

   

    private void printf(String str) {

        Log.e("TAG", "###################------ " + str + "------");

    }

   

    void callback(int val) {

        final int N = mCallbacks.beginBroadcast();

        for (int i=0; i<N; i++) {

            try {

                mCallbacks.getBroadcastItem(i).actionPerformed(val);

            } catch (RemoteException e) {

                // The RemoteCallbackList will take care of removing

                // the dead object for us.

            }

        }

        mCallbacks.finishBroadcast();

    }

   

    private final ITaskBinder.Stub mBinder = new ITaskBinder.Stub() {

        public void stopRunningTask() {

           

        }

       

        public boolean isTaskRunning() {

            return false;

        }

       

        public void registerCallback(ITaskCallback cb) {

            if (cb != null) mCallbacks.register(cb);

        }

        public void unregisterCallback(ITaskCallback cb) {

            if (cb != null) mCallbacks.unregister(cb);

        }

    };

   

    final RemoteCallbackList<ITaskCallback> mCallbacks

        = new RemoteCallbackList<ITaskCallback>();

}

 

4. MyActivity.java

package com.cmcc.demo;

 

import android.app.Activity;

import android.content.ComponentName;

import android.content.Context;

import android.content.Intent;

import android.content.ServiceConnection;

import android.graphics.Color;

import android.os.Bundle;

import android.os.IBinder;

import android.os.RemoteException;

import android.util.Log;

import android.view.View;

import android.view.ViewGroup;

import android.view.View.OnClickListener;

import android.widget.AbsoluteLayout;

import android.widget.Button;

import android.widget.LinearLayout;

import android.widget.RelativeLayout;

import android.widget.TextView;

 

import java.io.BufferedReader;

import java.io.File;

import java.io.FileOutputStream;

import java.io.FileReader;

import java.io.PrintWriter;

 

public class MyActivity extends Activity {

   

    private Button btnOk;

    private Button btnCancel;

   

    @Override

    public void onCreate(Bundle icicle) {

        super.onCreate(icicle);

       

        setContentView(R.layout.test_service);

       

        btnOk = (Button)findViewById(R.id.btn_ok);

        btnCancel = (Button)findViewById(R.id.btn_cancel);

       

        btnOk.setText("Start Service");

        btnCancel.setTag("Stop Service");

       

        btnOk.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {

                onOkClick();

            }

        });

 

        btnCancel.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {

                onCancelClick();

            }

        });

    }

   

    void onOkClick() {

        Bundle args = new Bundle();       

       

        Intent intent = new Intent(this, MyService.class);

        intent.putExtras(args);  

       

        //printf("send intent to start");

       

        //startService(intent);

        bindService(intent, mConnection, Context.BIND_AUTO_CREATE);

        startService(intent);

    }

   

    void onCancelClick() {

        Intent intent = new Intent(this, MyService.class);

        //printf("send intent to stop");

       

        unbindService(mConnection);

        //stopService(intent);

    }

   

    private void printf(String str) {

        Log.e("TAG", "###################------ " + str + "------");

    }

   

    ITaskBinder mService;

   

    private ServiceConnection mConnection = new ServiceConnection() {

        public void onServiceConnected(ComponentName className,

                IBinder service) {

            mService = ITaskBinder.Stub.asInterface(service);

            try {

                mService.registerCallback(mCallback);

            } catch (RemoteException e) {

            }

 

        }

        

        public void onServiceDisconnected(ComponentName className) {

            mService = null;

        }

    };

   

    private ITaskCallback mCallback = new ITaskCallback.Stub() {

        public void actionPerformed(int id) {

            printf("callback id=" + id);

        }

    };

}


]]>
Android Framework architecture -- bluez(2) http://www.shnenglu.com/iuranus/archive/2009/08/07/92522.html鏀鍗?/dc:creator>鏀鍗?/author>Fri, 07 Aug 2009 04:42:00 GMThttp://www.shnenglu.com/iuranus/archive/2009/08/07/92522.htmlhttp://www.shnenglu.com/iuranus/comments/92522.htmlhttp://www.shnenglu.com/iuranus/archive/2009/08/07/92522.html#Feedback4http://www.shnenglu.com/iuranus/comments/commentRss/92522.htmlhttp://www.shnenglu.com/iuranus/services/trackbacks/92522.html        Bluetooth signal on鎴愬姛鍚庯紝瑕佸仛鐨勫氨鏄煡鎵緎can浜嗭紝scan娑夊強鍒扮殑涓滆タ錛屽涓嬪浘錛?br>


        class bluetoothsetting鏄疷I鐨勫叆鍙o紝閫氳繃鎸塨utton scan榪涘叆鎼滅儲鐘舵侊紝applicaton灞傝皟鐢╞luetoothdevice, 鎺ョ潃灝辨槸bluetoothservice鐨勮皟鐢紝 bluetoothservice璋冪敤native鏂規硶錛屽埌姝ゅ叏閮ㄧ殑java紼嬪簭緇撴潫浜嗐備笅闈㈢殑璋冪敤閮芥槸JNI, cpp瀹炵幇鐨勩俛ndroid_server_bluetoothservice.cpp閲岄潰瀹炵幇浜唍avtive鏂規硶錛屾渶緇堥氳繃dbus灝佽錛岃皟鐢℉CID deamon 鐨刦unction DiscoverDevice.



]]>
Android Framework architecture -- bluez(1)http://www.shnenglu.com/iuranus/archive/2009/08/04/92109.html鏀鍗?/dc:creator>鏀鍗?/author>Mon, 03 Aug 2009 16:12:00 GMThttp://www.shnenglu.com/iuranus/archive/2009/08/04/92109.htmlhttp://www.shnenglu.com/iuranus/comments/92109.htmlhttp://www.shnenglu.com/iuranus/archive/2009/08/04/92109.html#Feedback4http://www.shnenglu.com/iuranus/comments/commentRss/92109.htmlhttp://www.shnenglu.com/iuranus/services/trackbacks/92109.html  闃呰鍏ㄦ枃

]]>
精品水蜜桃久久久久久久| 伊人色综合久久天天| 麻豆精品久久久久久久99蜜桃| 久久精品视频一| 国产精品久久久久aaaa| 欧美日韩成人精品久久久免费看| 狠狠色丁香婷婷久久综合五月| 久久精品夜夜夜夜夜久久| 国产精品成人精品久久久| 亚洲精品国产第一综合99久久| 精品国产一区二区三区久久| 亚洲国产一成久久精品国产成人综合| 久久精品99久久香蕉国产色戒| 成人精品一区二区久久久| 色欲久久久天天天综合网| 久久国产精品波多野结衣AV| 国产精品美女久久久m| 中文字幕精品久久| 久久久精品久久久久久| 久久精品男人影院| 91精品国产9l久久久久| 日韩精品久久久久久免费| 99久久综合国产精品免费| 久久久久亚洲av成人无码电影| 国产69精品久久久久777| 久久婷婷五月综合色奶水99啪| 偷偷做久久久久网站| 亚洲AⅤ优女AV综合久久久| 久久精品国产色蜜蜜麻豆| 久久99精品国产麻豆不卡| 品成人欧美大片久久国产欧美| 久久精品中文字幕久久| 久久香蕉综合色一综合色88| 久久精品国产99久久久| 久久精品国产精品亚洲毛片| 久久久免费精品re6| 国产精品久久久久9999高清| 久久精品嫩草影院| 久久久国产精华液| 久久亚洲sm情趣捆绑调教| 亚洲狠狠婷婷综合久久蜜芽 |