Advertisement
Guest User

Untitled

a guest
Jul 17th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.15 KB | None | 0 0
  1. package com.softbankrobotics.dialog_adjust_volume;
  2.  
  3. import android.content.Context;
  4. import android.support.annotation.NonNull;
  5. import android.support.v7.app.AppCompatActivity;
  6. import android.os.Bundle;
  7.  
  8. import com.aldebaran.qi.Consumer;
  9. import com.aldebaran.qi.Function;
  10. import com.aldebaran.qi.Future;
  11. import com.aldebaran.qi.sdk.Qi;
  12. import com.aldebaran.qi.sdk.QiContext;
  13. import com.aldebaran.qi.sdk.QiSDK;
  14. import com.aldebaran.qi.sdk.RobotLifecycleCallbacks;
  15. import com.aldebaran.qi.sdk.builder.AnimateBuilder;
  16. import com.aldebaran.qi.sdk.builder.AnimationBuilder;
  17. import com.aldebaran.qi.sdk.builder.DiscussBuilder;
  18. import com.aldebaran.qi.sdk.builder.TopicBuilder;
  19. import com.aldebaran.qi.sdk.object.actuation.Animate;
  20. import com.aldebaran.qi.sdk.object.actuation.Animation;
  21. import com.aldebaran.qi.sdk.object.conversation.BaseQiChatExecutor;
  22. import com.aldebaran.qi.sdk.object.conversation.Bookmark;
  23. import com.aldebaran.qi.sdk.object.conversation.BookmarkStatus;
  24. import com.aldebaran.qi.sdk.object.conversation.Chat;
  25. import com.aldebaran.qi.sdk.object.conversation.Chatbot;
  26. import com.aldebaran.qi.sdk.object.conversation.Conversation;
  27. import com.aldebaran.qi.sdk.object.conversation.Discuss;
  28. import com.aldebaran.qi.sdk.object.conversation.EditablePhraseSet;
  29. import com.aldebaran.qi.sdk.object.conversation.Phrase;
  30. import com.aldebaran.qi.sdk.object.conversation.QiChatExecutor;
  31. import com.aldebaran.qi.sdk.object.conversation.QiChatVariable;
  32. import com.aldebaran.qi.sdk.object.conversation.QiChatbot;
  33. import com.aldebaran.qi.sdk.object.conversation.Topic;
  34.  
  35. import java.util.ArrayList;
  36. import java.util.Collection;
  37. import java.util.HashMap;
  38. import java.util.Iterator;
  39. import java.util.List;
  40. import java.util.ListIterator;
  41. import java.util.Map;
  42. import java.util.Timer;
  43. import java.util.TimerTask;
  44. import android.media.MediaPlayer;
  45. import android.media.AudioManager;
  46. import android.util.Log;
  47.  
  48. public class MainActivity extends AppCompatActivity implements RobotLifecycleCallbacks {
  49.  
  50. private Future<String> discussFuture;
  51.  
  52. private Chat chat;
  53. private QiChatbot qichatbot;
  54.  
  55. private AudioManager myAudioManager;
  56.  
  57. //FUTURES//
  58. private Future<Void> chatFuture;
  59.  
  60.  
  61.  
  62. @Override
  63. protected void onCreate(Bundle savedInstanceState) {
  64. super.onCreate(savedInstanceState);
  65. setContentView(R.layout.activity_main);
  66.  
  67. QiSDK.register(this, this);
  68. }
  69.  
  70. @Override
  71. protected void onDestroy() {
  72. QiSDK.unregister(this);
  73.  
  74. super.onDestroy();
  75. }
  76.  
  77. ///////////////////////////EXECUTOR////////////////////////////////////
  78. class MyQiChatExecutor extends BaseQiChatExecutor {
  79. private final QiContext qiContext;
  80.  
  81. MyQiChatExecutor(QiContext context) {
  82. super(context);
  83. this.qiContext = context;
  84. }
  85.  
  86. @Override
  87. public void runWith(List<String> params) {
  88. if (params.size() > 0) {
  89. if (params.get(0).equals("getVolume")) {
  90. getStreamVolume();
  91. }
  92. else if (params.get(0).equals("setMaxVolume")) {
  93. setMaxVolume();
  94. }
  95. else if (params.get(0).equals("setMinVolume")) {
  96. setMinVolume();
  97. }
  98. else if (params.get(0).equals("setMinVolume")) {
  99. setMinVolume();
  100. }
  101. else if (params.get(0).equals("setVolume")) {
  102. setVolume(params.get(1));
  103. }
  104. else if (params.get(0).equals("calculateVolume")) {
  105. calculateVolume(params.get(1));
  106. }
  107. else if (params.get(0).equals("setPercentVolume")) {
  108. setPercentVolume(params.get(1));
  109. }
  110. else if (params.get(0).equals("raiseVolume")) {
  111. raiseVolume(params.get(1));
  112. }
  113.  
  114. else if (params.get(0).equals("lowerVolume")) {
  115. lowerVolume();
  116. }
  117.  
  118. }
  119. }
  120.  
  121.  
  122.  
  123.  
  124. @Override
  125. public void stop() {
  126. }
  127.  
  128. //GET CURRENT VOLUME, MAX VOLUME AND MIN VOLUME//
  129. private void getStreamVolume() {
  130. myAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
  131. int volume = myAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
  132. int maxVolume = myAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
  133. int minVolume = (int) ((double) maxVolume * 20 / 100);
  134. int volumeInPercent = (int) ((double) volume / maxVolume * 100);
  135. int androidVolumePlus = (int) ((double) maxVolume * (volumeInPercent + 10) / 100);
  136. int androidVolumeMinus = (int) ((double) maxVolume * (volumeInPercent - 10) / 100);
  137. try{
  138. qichatbot.variable("maxVolume").setValue(String.valueOf(maxVolume));
  139. qichatbot.variable("minVolume").setValue(String.valueOf(minVolume));
  140. qichatbot.variable("currentVolume").setValue(String.valueOf(volume));
  141. qichatbot.variable("currentVolumePlus").setValue(String.valueOf(androidVolumePlus));
  142. qichatbot.variable("currentVolumeMinus").setValue(String.valueOf(androidVolumeMinus));
  143. }catch (Exception e){}
  144.  
  145. }
  146.  
  147. //SET VOLUME TO THE MAXIMUM LEVEL//
  148. private void setMaxVolume() {
  149. myAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
  150. int maxVolume = myAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
  151. int volume = myAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
  152. if (volume == maxVolume) {
  153. try{
  154. qichatbot.variable("volumeIsMax").setValue("true");
  155. }catch (Exception e){}
  156. } else {
  157. try{
  158. qichatbot.variable("volumeIsMax").setValue("false");
  159. }catch (Exception e){}
  160. myAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, maxVolume, 0);
  161. }
  162. }
  163.  
  164. //SET VOLUME TO THE MINIMUM LEVEL//
  165. private void setMinVolume() {
  166. myAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
  167. int maxVolume = myAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
  168. int minVolume = (int) ((double) maxVolume * 20 / 100);
  169. int volume = myAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
  170. if (volume == minVolume) {
  171. try{
  172. qichatbot.variable("volumeIsMin").setValue("true");
  173. }catch (Exception e){}
  174. }
  175. else {
  176. try{
  177. qichatbot.variable("volumeIsMin").setValue("false");
  178. }catch (Exception e){}
  179. myAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, minVolume, 0);
  180. }
  181. }
  182.  
  183.  
  184. //ADD OR SUBSTRATE CERTAIN AMOUNT FROM CURRENT VOLUME EG: "RAISE BY 2"//
  185. private void calculateVolume(String num) {
  186. myAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
  187. int maxVolume = myAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
  188. int minVolume = (int) ((double) maxVolume * 20 / 100);
  189. int currentVolume = myAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
  190. int Num = Integer.parseInt(num);
  191. int volumeToSet = currentVolume + Num;
  192. if (currentVolume == minVolume && volumeToSet < minVolume) {
  193. try {
  194. qichatbot.variable("volumeIsMin").setValue("true");
  195. qichatbot.variable("volumeIsMax").setValue("false");
  196. }catch (Exception e){}
  197. } else if (currentVolume == maxVolume && volumeToSet > maxVolume) {
  198. try {
  199. qichatbot.variable("volumeIsMax").setValue("true");
  200. qichatbot.variable("volumeIsMin").setValue("false");
  201. }catch (Exception e){}
  202. } else if (volumeToSet > maxVolume) {
  203. volumeToSet = maxVolume;
  204. try{
  205. qichatbot.variable("exceedMaxValue").setValue("true");
  206. qichatbot.variable("exceedMinValue").setValue("false");
  207. qichatbot.variable("setVolume").setValue(String.valueOf(volumeToSet));
  208. }catch (Exception e){}
  209. myAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, volumeToSet, 0);
  210. } else if (volumeToSet < minVolume) {
  211. volumeToSet = minVolume;
  212. try{
  213. qichatbot.variable("exceedMinValue").setValue("true");
  214. qichatbot.variable("exceedMaxValue").setValue("false");
  215. qichatbot.variable("setVolume").setValue(String.valueOf(volumeToSet));
  216. }catch (Exception e){}
  217. myAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, volumeToSet, 0);
  218. } else {
  219. try{
  220. qichatbot.variable("setVolume").setValue(String.valueOf(volumeToSet));
  221. qichatbot.variable("volumeIsMax").setValue("false");
  222. qichatbot.variable("volumeIsMin").setValue("false");
  223. qichatbot.variable("exceedMinValue").setValue("false");
  224. qichatbot.variable("exceedMaxValue").setValue("false");
  225. }catch (Exception e){}
  226. myAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, volumeToSet, 0);
  227. }
  228. }
  229.  
  230. //SET REQUESTED VOLUME EG. "SET THE VOLUME TO 5"//
  231. private void setVolume(String askedVolume) {
  232. myAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
  233. int currentVolume = myAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
  234. int volume = Integer.parseInt(askedVolume);
  235. if (currentVolume == volume) {
  236. try{
  237. qichatbot.variable("volumeIsSame").setValue("true");
  238. }catch (Exception e){}
  239. } else {
  240. try {
  241. qichatbot.variable("volumeIsSame").setValue("false");
  242. }catch (Exception e){}
  243. myAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, volume, 0);
  244. }
  245. }
  246.  
  247. //SET REQUESTED PERCENT OF VOLUME EG. "SET THE VOLUME TO 50%" //
  248. private void setPercentVolume(String askedPercent) {
  249. myAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
  250. //get max volume
  251. int maxVolume = myAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
  252. //get current volume
  253. int currentVolume = myAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
  254. //get asked volume
  255. int percentage = Integer.parseInt(askedPercent);
  256. //convert percent in android volume level
  257. double percentInAndroidVolume = ((double) maxVolume * percentage / 100);
  258. int androidVolumeConverted = (int) percentInAndroidVolume;
  259. //if asked volume == min volume and current volume == min volume, robot will say that he
  260. // is already at his min volume
  261. if (androidVolumeConverted == currentVolume) {
  262. try {
  263. qichatbot.variable("volumeIsSame").setValue("true");
  264. }catch (Exception e){}
  265. }
  266. //else, robot will set the asked volume.
  267. else {
  268. try{
  269. qichatbot.variable("volumeIsSame").setValue("false");
  270. qichatbot.variable("setVolume").setValue(String.valueOf(androidVolumeConverted));
  271. }catch (Exception e){}
  272. myAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, androidVolumeConverted, 0);
  273.  
  274. }
  275. }
  276.  
  277. //RAISE THE VOLUME//
  278. private void raiseVolume(String amount) {
  279. int Amount = Integer.parseInt(amount);
  280. myAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
  281. int volumeLevel = myAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
  282. int maxVolume = myAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
  283. if (volumeLevel == maxVolume) {
  284. try {
  285. qichatbot.variable("volumeIsMax").setValue("true");
  286. }catch (Exception e){}
  287. } else {
  288. int volumeToSet = (int) ((double) volumeLevel + (((double) maxVolume * Amount) / 100));
  289. if (volumeToSet > maxVolume) {
  290. volumeToSet = maxVolume;
  291. }
  292. try {
  293. qichatbot.variable("volumeIsMax").setValue("false");
  294. }catch (Exception e){}
  295. myAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, volumeToSet, 0);
  296. }
  297. }
  298.  
  299.  
  300. //LOWER THE VOLUME//
  301. private void lowerVolume() {
  302. myAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
  303. int volumeLevel = myAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
  304. int maxVolume = myAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
  305. int minVolume = (int) ((double) maxVolume * 20 / 100);
  306. if (volumeLevel == minVolume) {
  307. try {
  308. qichatbot.variable("volumeIsMin").setValue("true");
  309. }catch (Exception e){}
  310. } else {
  311. int volumeToSet = (int) ((double) volumeLevel - (((double) maxVolume * 10) / 100));
  312. if (volumeToSet < minVolume) {
  313. volumeToSet = minVolume;
  314. }try{
  315. qichatbot.variable("volumeIsMin").setValue("false");
  316. }catch (Exception e){}
  317. myAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, volumeToSet, 0);
  318. }
  319. }
  320.  
  321.  
  322.  
  323. }
  324.  
  325. @Override
  326. public void onRobotFocusGained(final QiContext qiContext) {
  327.  
  328.  
  329. //BUILD PHASE: TO EXECUTE ONCE!//
  330. // Get the conversation service.
  331. Conversation conversationService = qiContext.getConversation();
  332.  
  333. final Topic dlg_adjust_volume = TopicBuilder.with(qiContext)
  334. .withResource(R.raw.dlg_adjust_volume)
  335. .build();
  336.  
  337. final Topic lexicon = TopicBuilder.with(qiContext)
  338. .withResource(R.raw.lexicon)
  339. .build();
  340.  
  341. final Topic dlg_adjust_volume_minimal = TopicBuilder.with(qiContext)
  342. .withResource(R.raw.dlg_adjust_volume_minimal)
  343. .build();
  344.  
  345. final Topic dlg_adjust_volume_fallback = TopicBuilder.with(qiContext)
  346. .withResource(R.raw.dlg_adjust_volume_fallback)
  347. .build();
  348.  
  349. // Create a list of topics to pass it to qiChatbot
  350. List<Topic> topics = new ArrayList<>();
  351. topics.add(dlg_adjust_volume);
  352. topics.add(lexicon);
  353. topics.add(dlg_adjust_volume_minimal);
  354. topics.add(dlg_adjust_volume_fallback);
  355.  
  356.  
  357.  
  358. // Create qiChatbot
  359. qichatbot = conversationService.makeQiChatbot(qiContext.getRobotContext(), topics);
  360. Map<String, QiChatExecutor> executors = new HashMap<>();
  361.  
  362. // Map the executor name from the topic to our qiChatbotExecutor
  363. executors.put("dlg_volume", new MyQiChatExecutor(qiContext));
  364.  
  365.  
  366.  
  367. //////////////RUN PHASE//////////////////
  368.  
  369. // Set the executors to the qiChatbot
  370. try {
  371. qichatbot.setExecutors(executors);
  372. List<Chatbot> chatbots = new ArrayList<>();
  373. chatbots.add(qichatbot);
  374.  
  375. myAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
  376. int maxVolume = myAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
  377. int minVolume = (int) ((double) maxVolume * 20 / 100);
  378. qichatbot.variable("minVolume").setValue(String.valueOf(minVolume));
  379. qichatbot.variable("maxVolume").setValue(String.valueOf(maxVolume));
  380.  
  381. EditablePhraseSet my_concept = qichatbot.dynamicConcept("minimum_volume");
  382. ArrayList<Phrase> myPhrases = new ArrayList<>();
  383. String minimumVol = String.valueOf(minVolume);
  384. Phrase ph = new Phrase(minimumVol);
  385. myPhrases.add(ph);
  386. my_concept.addPhrases(myPhrases);
  387.  
  388. EditablePhraseSet my_concept2 = qichatbot.dynamicConcept("maximum_volume");
  389. ArrayList<Phrase> myPhrases2 = new ArrayList<>();
  390. String maximumVol = String.valueOf(maxVolume);
  391. Phrase ph2 = new Phrase(maximumVol);
  392. myPhrases2.add(ph2);
  393. my_concept2.addPhrases(myPhrases2);
  394.  
  395. // make chat with the chatbots
  396. chat = conversationService.makeChat(qiContext.getRobotContext(), chatbots);
  397.  
  398. chatFuture = chat.async().run();
  399.  
  400. }catch (Exception e){}
  401.  
  402. }
  403.  
  404.  
  405. @Override
  406. public void onRobotFocusLost() {
  407.  
  408. }
  409.  
  410. @Override
  411. public void onRobotFocusRefused(String reason) {
  412. }
  413. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement