在android studio中如何创建一个类来继承另外一个类_在Android使用Transition API检测用户活动...
在當(dāng)今世界,移動(dòng)設(shè)備是我們?nèi)粘I钪斜夭豢缮俚囊徊糠?#xff0c;我們?cè)谧呗贰⑴懿健㈤_(kāi)車以及其他許多活動(dòng)時(shí)都會(huì)使用移動(dòng)設(shè)備。
了解用戶拿著手機(jī)的時(shí)候在做什么,可以讓你的應(yīng)用程序根據(jù)用戶的動(dòng)作進(jìn)行直觀的調(diào)整。對(duì)于某些應(yīng)用程序,確定用戶何時(shí)開(kāi)始或停止某個(gè)特定活動(dòng)可能是必要的。例如,一個(gè)應(yīng)用程序可以在用戶開(kāi)始跑步的時(shí)候在后臺(tái)啟動(dòng)音樂(lè),或者計(jì)算燃燒的卡路里數(shù)。
在今天的文章中,我們將學(xué)習(xí)如何在Android中檢測(cè)和識(shí)別用戶活動(dòng),這樣,你的應(yīng)用程序?qū)⒃谂c用戶交互方面更加智能化,并能夠提供高度定制的體驗(yàn)。
為此,我們將使用Activity Recognition Transition API。這個(gè)庫(kù)建立在可用的設(shè)備傳感器(陀螺儀、加速計(jì)等)上,以高精度檢測(cè)用戶活動(dòng)的變化。此外,也許最重要的是,它消耗更少的電力。
本篇文章假定你已有使用Kotlin和AndroidX構(gòu)建安卓應(yīng)用程序的經(jīng)驗(yàn).
項(xiàng)目設(shè)置
首先在Android Studio中創(chuàng)建一個(gè)新項(xiàng)目,或者打開(kāi)一個(gè)現(xiàn)有的項(xiàng)目,在其中添加活動(dòng)識(shí)別功能。
首先要配置的是依賴項(xiàng)。在應(yīng)用程序的build.gradle文件添加如下行:
首先要配置的是依賴項(xiàng)。在應(yīng)用程序的build.gradle文件添加如下行:
dependencies {//.... other dependenciesimplementation "com.google.android.gms:play-services-location:17.0.0"implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0' }接下來(lái),在AndroidManifest.xml添加權(quán)限:
接下來(lái),在AndroidManifest.xml添加權(quán)限:
<!-- Required for 28 and below --> <uses-permission android:name="com.google.android.gms.permission.ACTIVITY_RECOGNITION" /><!-- Required for 29+. --> <uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" />注意:在API 29及以上,您需要?jiǎng)討B(tài)請(qǐng)求權(quán)限。
活動(dòng)類型
Transition API使您能夠檢測(cè)到用戶的多種活動(dòng)類型—下面是列表:
- IN_VEHICLE: 表示設(shè)備在車內(nèi)
- ON_BICYCLE: 表示設(shè)備在自行車上
- RUNNING: 表示設(shè)備用戶在跑步
- ON_FOOT: 表示設(shè)備用戶正在走路或者跑步
- STILL: 表示設(shè)備沒(méi)有在移動(dòng)
- WALKING: 表示設(shè)備用戶在走路
API還讓您知道特定的活動(dòng)是即將開(kāi)始還是即將結(jié)束。這由轉(zhuǎn)換類型表示:
- ACTIVITY_TRANSITION_ENTER: 用戶開(kāi)始特定活動(dòng)
- ACTIVITY_TRANSITION_EXIT: 用戶推出特定活動(dòng)
在接下來(lái)的幾節(jié)中,我們需要知道我們要查找的類型和活動(dòng)名稱。
建立一個(gè)API請(qǐng)求
為了告訴API要監(jiān)控哪些活動(dòng),我們需要事先知道活動(dòng)名稱和轉(zhuǎn)換類型。然后,我們創(chuàng)建一個(gè)ActivityTransition對(duì)象的列表,并從這個(gè)列表中創(chuàng)建activityTransitionRequest對(duì)象來(lái)構(gòu)造請(qǐng)求。
下面我們來(lái)看看如何實(shí)現(xiàn)這一點(diǎn):
val接收結(jié)果
在繼續(xù)之前,我們需要設(shè)置一個(gè)地方來(lái)接收API的更新。例如,一個(gè)更新可以是用戶進(jìn)入IN_VEHICLE,即進(jìn)入車內(nèi)活動(dòng)。
我們可以通過(guò)使用BroadcastReceiver類來(lái)實(shí)現(xiàn)這一點(diǎn)。我們通過(guò)擴(kuò)展BroadcastReceiver類來(lái)創(chuàng)建所需的類,然后重寫(xiě)onReceive()方法以從API接收更新。
在onReceive()方法中,我們?cè)跈z測(cè)到活動(dòng)后執(zhí)行所需的操作—可以向用戶發(fā)送通知,也可以啟動(dòng)后臺(tái)服務(wù)—實(shí)際上由您來(lái)決定檢測(cè)到指定活動(dòng)后如何做。
以下是我們的BroadcastReceiver的實(shí)現(xiàn):
import我們使用兩個(gè)輔助函數(shù)activityType和transitionType將整數(shù)常量轉(zhuǎn)換為字符串。
連接組件
現(xiàn)在,我們有了一個(gè)接收器可以處理API發(fā)送的更新,我們可以告訴API從哪里發(fā)送。具體步驟如下:
首先,我們創(chuàng)建一個(gè)Intent,使用我們定義的變量RECEIVER_ACTION作為參數(shù)。
接著,我們從廣播接收器和上面的intent創(chuàng)建一個(gè)PendingIntent。
val在這之后,我們創(chuàng)建一個(gè)我們的接收器的實(shí)例,并把它注冊(cè)到LocalBroadcastManager中,使用我們指定的RECEIVER_ACTION作為IntentFilter。
receiver讓我進(jìn)一步解釋一下這一步。我們知道,BroadcastReceiver可以接收和響應(yīng)來(lái)自其他應(yīng)用程序或系統(tǒng)的廣播消息。但是要做到這一點(diǎn),首先需要注冊(cè)這個(gè)接收器,我們?cè)谏厦娴拇a中使用LocalBroadcastManager進(jìn)行注冊(cè)。
當(dāng)我們注冊(cè)一個(gè)廣播接收器時(shí),我們還需要指定響應(yīng)什么,換句話說(shuō),要監(jiān)聽(tīng)和響應(yīng)什么事件。我們用自定義的行為RECEIVER_ACTION構(gòu)建IntentFilter來(lái)實(shí)現(xiàn)這一點(diǎn)。
作為最后一步,我們請(qǐng)求ActivityRecognition API使用前面創(chuàng)建的PendingIntent和ActivityTransitionRequest進(jìn)行更新。
val以下是前面步驟的完整代碼片段:
// creating the pending intent停止跟蹤
在某個(gè)時(shí)間點(diǎn),如果您想取消并停止來(lái)自API的更新,可以在onStop()或onDestroy()方法,或者在您認(rèn)為有必要停止跟蹤的任何位置執(zhí)行此操作。
我們需要做兩件事來(lái)停止識(shí)別活動(dòng):
- 注銷接收器以停止接收傳入數(shù)據(jù)。
- 告訴API從我們的接收器中刪除更新。
下面的topActivityRecognition()-您可以定義并在必要時(shí)調(diào)用:
private結(jié)論
我們?cè)诒疚闹锌吹搅巳绾螜z測(cè)你的用戶的行為,并根據(jù)需要作出響應(yīng)。您可以使用這個(gè)強(qiáng)大的API為用戶提供高度可定制和身臨其境的體驗(yàn)。
原文鏈接
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的在android studio中如何创建一个类来继承另外一个类_在Android使用Transition API检测用户活动...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 个人如何进行黄金投资?黄金投资的主要方式
- 下一篇: opengles 3.0游戏开发_开发者