@ech199801 建議整個專案sync下來build比較穩唷
因為我們飯粒有測試過可以build過,有些gradle吃libary的寫法也先寫好在裡面了,會減少在環境上study的時間
Posts made by wu.will
@musicsusanshen
針對第一個問題 playFaceAnimation(int id)
目前此API是我們開發中先定義出來的Interface,尚未實現,目前凱比臉僅能控制嘴巴與show/hide唷
https://developer-docs.nuwarobotics.com/sdk/javadoc/reference/com/nuwarobotics/service/facecontrol/UnityFaceManager.html
針對問題二,
是否有相關log可以參考?
另外提醒一下,此API僅適用於下一次的startTTS
請在每次下startTTS前設定這個參數
mRobot.setSpeakParameter(VoiceEventListener.SpeakType.NORMAL, "pitch", "100"); //the parameters is 50~200
mRobot.setSpeakParameter(VoiceEventListener.SpeakType.NORMAL, "speed", "100"); //the parameters is 50~200
mRobot.setSpeakParameter(VoiceEventListener.SpeakType.NORMAL, "isForced", "true"); //MUST set as true
mRobot.startTTS("說話字串");
@w-lchang1108 這個API僅支援,用於預設主要辨識的語言。
目前無API用於設定只辨識某個語言唷。
@grace861211 請問您是使用標準Android Camera API開啟相機嗎?
可否分享一下程式碼片段呢?
Hi @hang ,
我們NUWA提供的語音觸發有兩條路可以走
- activity : 宣告在這裡,nuwa聽到你定義的語音詞,會"開啟" 直接startActivity
- receiver : 宣告在這裡,nuwa聽到你定義的語音詞,會"通知" broadcast intent給該receiver
若你需要"開啟"Activity,需要宣告的是Activity內的metadata與action即可
<activity
android:name=".YouAppClass"
android:exported="true"
android:label="App Name"
android:screenOrientation="landscape" >
<intent-filter>
<action android:name="com.nuwarobotics.api.action.VOICE_COMMAND" />
</intent-filter>
<meta-data android:name="com.nuwarobotics.api.action.VOICE_COMMAND" android:value="你的語音詞" >
</activity>
試試看~~
我覺得跟我猜的差不多^^"
你每次click item都會檢查一次所有宣告的權限 (包含你宣告的+NuwaSDK Manifest內宣告的)
但由於 nuwa sdk 內宣告的這兩個,因為這兩個要系統APP才能取得權限,因此你們永遠都無法取得權限
<uses-permission android:name="android.permission.INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.DELETE_PACKAGES" />
這導致了你的allPermissionsGranted() 永遠都會回傳false.
- 小提醒 : 你使用的PackageInfo 內的requestPermissions 取得的是所有<uses-permission>宣告,但並非所有宣告都屬於run time permission。 (只有runtime permission可以被使用者同意取得權限)
https://stackoverflow.com/questions/39421952/packageinfo-requestedpermissions-vs-permissions
我猜測你們這段權限判斷,是不是只是想確保每次click run time permission都有被允許??
一般來說(Google建議)runtime permission都要在一開APP的時候就確認
底下給個sample code參考一下,你只需要針對runtime permission在一開始的時候確認即可,一但取得權限了,通常不會在APP UI執行期間重複的檢查
private static final int PERMISSION_REQUEST_PERM = 101;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
&& checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
this.requestPermissions();
}else{
checkSystemWritePermission();
}
}
private void requestPermissions() {
String[] permissions = new String[] {
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.READ_PHONE_STATE};
ActivityCompat.requestPermissions(this, permissions, PERMISSION_REQUEST_PERM );
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case LOCATION_PERM:
if (grantResults[0] != PackageManager.PERMISSION_GRANTED) {
Log.e(TAG, "Coarse location permission is not granted!");
finish();
}
break;
}
}
@chuangwater2487 很抱歉範例沒有說明清楚
目前Kebbi Air硬體版本臉部觸控,改用新的API
我們在下面臉部控制範例中,加上了收face touch callback的範例
https://github.com/nuwarobotics/NuwaSDKExample/blob/master/app/src/main/java/com/nuwarobotics/example/activity/FaceControlExampleActivity.java
若有正確收到事件,會有底下log出現
請參考一下~~
@chuangwater2487 NuwaSDK確實有宣告這兩個permission, 但在一般情況下應該是不會因為宣告了而造成程式異常。
<uses-permission android:name="android.permission.INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.DELETE_PACKAGES" />
可否分享更多點的程式片斷讓我幫忙看看,我在想會不會是你判斷權限的地方若有一個permission沒有被grant就把整個行為檔掉。
如果是的話,可能要請你調整一下判斷,ignore讓INSTALL_PACKAGES permission不會因為沒有grant而檔掉你的行為。
@grace861211 可以壓,如果要依序一直撥放下去
可以收onCompleteOfMotionPlay作為開始下一個motion的開始點~
onCompleteOfMotionPlay callback用途是通知APP,你撥放的這個motion完成了。