以下內(nèi)容含腳本,或可能導(dǎo)致頁面不正常的代碼 |
---|
說明:上面顯示的是代碼內(nèi)容。您可以先檢查過代碼沒問題,或修改之后再運(yùn)行. |
在塞格勒看來,上述觀點(diǎn)除了其與比奇之外,還會(huì)有更多人贊同。
塞格勒表示,在過去的幾年中,其已經(jīng)使用了6款不同的Android手機(jī),盡管如此,塞格勒仍無法喜歡上Android手機(jī)。如今,新版的Android手機(jī)要比iPhone面世前的各種老版手機(jī)好了上百萬倍。對(duì)此,塞格勒認(rèn)為,如果沒有iPhone的出現(xiàn),其會(huì)毫不猶豫地選擇Android手機(jī),并可能也會(huì)對(duì)Android產(chǎn)品感到滿意,但事實(shí)情況是,iPhone手機(jī)已經(jīng)面世,而且其要優(yōu)于Android,因此,塞格勒也開始動(dòng)搖對(duì)Android的信念。
塞格勒的觀點(diǎn)是:追求最好!但是,此分析師認(rèn)為導(dǎo)致iPhone未被其視為最佳手機(jī)產(chǎn)品的主要原因就是AT&T的相關(guān)規(guī)定,并且為了擺脫這些規(guī)定,塞格勒又再次選擇了Android手機(jī),而將iPhone暫時(shí)擱置一邊。
塞格勒還表示,盡管iPhone的好多功能和外部特征都優(yōu)于Android手機(jī),甚至有一些Android手機(jī)的忠實(shí)支持者也會(huì)認(rèn)為iPhone具有更好的用戶體驗(yàn),但這些支持者卻由于AT&T針對(duì)iPhone手機(jī)的一些規(guī)定和要求而再度選擇Android產(chǎn)品。例如,他們痛恨AT&T禁止在iPhone上使用Google Voice服務(wù),對(duì)此塞格勒本人也非常痛恨。另外,這些支持者也痛恨蘋果公司在應(yīng)用商店方面也設(shè)置重重障礙(塞格勒本人也對(duì)蘋果這些障礙政策持反對(duì)態(tài)度)。
不過,也有多數(shù)消費(fèi)者認(rèn)為,這些都不是構(gòu)成他們不喜歡iPhone的真正原因,他們甚至?xí)䦟?duì)這些限制性措施視而不見,而他們的確不喜歡iPhone的真正原因就是因?yàn)锳T&T公司(特別是在美國市場(chǎng))。
塞格勒總體認(rèn)為,手機(jī)市場(chǎng)的競(jìng)爭(zhēng)非常激烈,但對(duì)于iPhone登陸Verizon之后的銷量是否會(huì)大幅增長(zhǎng)以及Android手機(jī)銷量是否會(huì)因此削弱,目前仍不得而知。不管是否會(huì)有大量的Android用戶會(huì)在iPhone登陸Verizon之后轉(zhuǎn)向iPhone手機(jī),但無論如何,針對(duì)這種情形,Google一定會(huì)采取相應(yīng)的應(yīng)對(duì)措施
]]>比如我們要找個(gè)int func(double)類型的函數(shù),就該這么寫:
jmethodID construction_id = env->GetMethodID(obj_class, " func ", "(D)I");
找到了構(gòu)造函數(shù)的方法之后我們直接調(diào)用構(gòu)造函數(shù),然后把生成的類返回即可
jobject obj = env->NewObject(obj_class, construction_id);
其中obj_class為類的句柄construction_id為構(gòu)造函數(shù)的句柄,而類的實(shí)例被該函數(shù)返回。
5.3 調(diào)用java類的其他函數(shù)
JNIEXPORT jstring JNICALL Java_com_hm_hello_CActivityMain_stringFromJNI
(JNIEnv* env, jobject)
{
jstring str;
jclass java_class = env->FindClass("com/hm/hello/CForCall");
if (java_class == 0)
{
return env->NewStringUTF("not find class!");
}
jobject java_obj = getInstance(env, java_class);
if (java_obj == 0)
{
return env->NewStringUTF("not find java OBJ!");
}
jmethodID java_method = env->GetMethodID(java_class, "GetJavaString", "()Ljava/lang/String;");
if(java_method == 0)
{
return env->NewStringUTF("not find java method!");
}
str = (jstring)env->CallObjectMethod(java_obj, java_method);
return str;
}
看完了構(gòu)造函數(shù)的介紹,這段代碼其實(shí)很容易就看懂了,我們發(fā)現(xiàn)調(diào)用java中的函數(shù)的步驟無非幾步:
1找到類句柄
2找到類的方法的句柄
3實(shí)例化類
4調(diào)用實(shí)例化類的方法。
而以上代碼中只有一段沒說過,就是
jclass java_class = env->FindClass("com/hm/hello/CForCall");
看名字就知道,是在找相應(yīng)的類的句柄,其中com.hm.hello準(zhǔn)備調(diào)用類的完整包名(把.轉(zhuǎn)換為/),而CforCall就是我們要調(diào)用的類的名稱。
至此,編譯,然后在Android調(diào)試,可愛的機(jī)器人又出現(xiàn)了,哈哈,屏幕上顯示出現(xiàn)了12345,成功!
1264632164_bFh1SY.jpg (34.57 KB)
下載次數(shù):0
2010-1-28 15:54
2412298499.jpg (30.2 KB)
下載次數(shù):0
2010-1-28 15:54
正文:
FiledUnder以下內(nèi)容含腳本,或可能導(dǎo)致頁面不正常的代碼 |
---|
說明:上面顯示的是代碼內(nèi)容。您可以先檢查過代碼沒問題,或修改之后再運(yùn)行. |
系統(tǒng) |
2009 |
2010 |
2011 |
2014 |
Symbian |
8087.63 |
10766.24 |
14127.86 |
26435.18 |
市場(chǎng)份額(%) |
46.9 |
40.1 |
34.2 |
30.2 |
Android |
679.84 |
4746.21 |
9193.77 |
25930.64 |
市場(chǎng)份額(%) |
3.9 |
17.7 |
22.2 |
29.6 |
Research In Motion |
3434.68 |
4692.29 |
6219.82 |
10257.95 |
市場(chǎng)份額(%) |
19.9 |
17.5 |
15.0 |
11.7 |
iOS |
2488.98 |
4146.18 |
7074.00 |
13039.30 |
市場(chǎng)份額(%) |
14.4 |
15.4 |
17.1 |
14.9 |
Windows Phone |
1503.11 |
1268.65 |
2130.88 |
3449.02 |
市場(chǎng)份額(%) |
8.7 |
4.7 |
5.2 |
3.9 |
其他操作系統(tǒng) |
1043.19 |
1258.81 |
2601.73 |
8445.29 |
市場(chǎng)份額(%) |
6.1 |
4.7 |
6.3 |
9.6 |
市場(chǎng)總量(萬臺(tái)) |
17237.43 |
26878.37 |
41348.05 |
87557.38 |
操作系統(tǒng) |
2010 市場(chǎng)份額 |
2014 市場(chǎng)份額 |
2014/2010變化 |
Symbian |
40.1% |
32.9% |
-18.0% |
BlackBerry OS |
17.9% |
17.3% |
-3.5% |
Android |
16.3% |
24.6% |
51.2% |
iOS |
14.7% |
10.9% |
-25.8% |
Windows Mobile |
6.8% |
9.8% |
43.3% |
其他 |
4.2% |
4.5% |
8.3% |
總計(jì) |
100.0% |
100.0% |
先上截圖:
應(yīng)用的主要功能是根據(jù)適當(dāng)?shù)那榫埃ㄈ绲攸c(diǎn),手機(jī)狀態(tài)等)為用戶自動(dòng)的切換情景模式。
比方說:手機(jī)向上是鈴音+震動(dòng),當(dāng)開會(huì)時(shí),將手機(jī)翻轉(zhuǎn),將自動(dòng)切換成靜音模式。
還可以根據(jù)經(jīng)緯度,到達(dá)一個(gè)地方后自動(dòng)切換成用戶預(yù)先設(shè)置的情景模式。
(當(dāng)然,由于沒找到合適的經(jīng)緯度換算工具,經(jīng)緯度的判斷目前只能是精確位置,不是范圍值。
因此只能算是個(gè)學(xué)習(xí)的小應(yīng)用了,實(shí)際的應(yīng)用還有待完善啊。如果有高手知道的話,麻煩告訴我下。萬分感謝)
-------------------------廢話不多說開始代碼部分-----------------------------------------------------
雖然是一個(gè)只有一個(gè)頁面的小應(yīng)用,但是
麻雀雖小,五臟俱全
這個(gè)應(yīng)用的功能點(diǎn)主要有:
改變情景模式
實(shí)時(shí)獲取地理位置
實(shí)時(shí)判斷手機(jī)重力狀態(tài)
用到的技術(shù)包括:
1.android Google map的應(yīng)用
2.Android組件的使用
Activity(MapActivity)
Service
Broadcastreceiver
3.Xml解析
4.文件存儲(chǔ)
5.傳感器使用
6.底層繪圖
7.自定義view
由于使回頭看代碼,我就從簡(jiǎn)單的部分一步步介紹。
首先是權(quán)限問題,很多新手都犯了這個(gè)毛病,程序出錯(cuò),往往是權(quán)限沒有添加。
<!-- 網(wǎng)絡(luò)鏈接 --> <uses-permission android:name="android.permission.INTERNET"/> <!-- 地圖 --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <!-- 讀寫權(quán)限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE" />
這個(gè)應(yīng)用需要網(wǎng)絡(luò)連接的權(quán)限,因?yàn)镚oogle map是實(shí)時(shí)更新的么。然后是GPS傳感器關(guān)于地理位置的權(quán)限。最后需要存儲(chǔ)用戶的記錄點(diǎn),所以有文件讀寫的權(quán)限。
為了記錄用戶記錄的情景地點(diǎn),我使用了XML作為存儲(chǔ)的標(biāo)準(zhǔn),并將文件存在了SD卡上
XML解析
網(wǎng)絡(luò)上有很詳細(xì)的各種解析方式,我采用了其中的一種。如果想了解其他的請(qǐng)Google。。。。。
記錄地點(diǎn)信息,我定義了一個(gè)POJO類
public class RecordLocation { private String location_Id; private String location_ring; private double location_latitude; private double location_longitude; private GeoPoint point; ...篇幅關(guān)系,其他的略
XML的解析器,和網(wǎng)絡(luò)上的其他文章一樣就不多說了。能拿來用就成。