Advertisement
Guest User

Untitled

a guest
Oct 24th, 2016
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.92 KB | None | 0 0
  1. private class ScooterHolder extends RecyclerView.ViewHolder implements View.OnClickListener,TextToSpeech.OnInitListener {
  2.  
  3. private Scooter mScooter;
  4.  
  5. private TextView mTitleTextView,mDateTextView, mTextViewTarif,mTextViewStatus,mTextViewSum;
  6. private ToggleButton mToggleButtonStart,mToggleButtonPaid;
  7. private RelativeLayout mRelativeLayout;
  8. private EditText mEditTextTime;
  9.  
  10. private CountDownTimer timer;
  11. private Timer mTimer;
  12. private MyTimerTask mMyTimerTask;
  13.  
  14.  
  15. public ScooterHolder(View itemView) {
  16. super(itemView);
  17. itemView.setOnClickListener(this);
  18.  
  19. mTitleTextView = (TextView) itemView.findViewById(R.id.list_item_scooter_title_text_view);
  20. mDateTextView = (TextView) itemView.findViewById(R.id.list_item_scooter_date_text_view);
  21. mTextViewTarif=(TextView)itemView.findViewById(R.id.list_item_scooter_tarif_text_view);
  22. mTextViewStatus=(TextView)itemView.findViewById(R.id.list_item_scooter_status_text_view);
  23. mTextViewSum=(TextView)itemView.findViewById(R.id.list_item_scooter_sum_text_view);
  24. mToggleButtonStart=(ToggleButton) itemView.findViewById(R.id.list_item_scooter_start_toggle_button);
  25. mToggleButtonPaid=(ToggleButton)itemView.findViewById(R.id.list_item_scooter_paid_toggle_button);
  26. mRelativeLayout=(RelativeLayout)itemView.findViewById(R.id.list_item_layout);
  27. mEditTextTime=(EditText)itemView.findViewById(R.id.list_item_scooter_edit_text_time);
  28.  
  29. mToggleButtonStart.setOnClickListener(this);
  30. mToggleButtonPaid.setOnClickListener(this);
  31. mTitleTextView.setOnClickListener(this);
  32.  
  33. mTTS = new TextToSpeech(getActivity(), this);
  34.  
  35. }
  36.  
  37. public void bindScooter(Scooter scooter) {
  38. mScooter = scooter;
  39. mTitleTextView.setText("Скутер №"+mScooter.getTitle());
  40. mTextViewTarif.setText("Тариф: "+mScooter.getTarif());
  41. mTextViewStatus.setText("Статус скутера: "+mScooter.getStatus());
  42.  
  43. mEditTextTime.setOnEditorActionListener(new TextView.OnEditorActionListener() {
  44. @Override
  45. public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
  46. int result = actionId & EditorInfo.IME_MASK_ACTION;
  47. switch (result) {
  48. case EditorInfo.IME_ACTION_DONE:
  49. mScooter.setDate((Long.valueOf(v.getText().toString())*60*1000));
  50. mTextViewSum.setText("Сумма к оплате: "+((Double.valueOf(v.getText().toString()))*mScooter.getSum())+" руб.");
  51. mEditTextTime.setText(v.getText().toString()+" мин");
  52. ScooterLab.get(getActivity()).updateScooter(mScooter);
  53. InputMethodManager imm=(InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
  54. imm.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
  55. break;
  56. }
  57. return true;
  58. }
  59. });
  60.  
  61.  
  62. if (mScooter.isPaid()==true){
  63. mToggleButtonPaid.setTextColor(Color.GREEN);
  64. mToggleButtonPaid.setChecked(true);
  65. }else {
  66. mToggleButtonPaid.setTextColor(Color.RED);
  67. }
  68.  
  69. if (mScooter.isStart()==true){
  70. mToggleButtonStart.setTextColor(Color.RED);
  71. mToggleButtonStart.setChecked(true);
  72. }else {
  73. mToggleButtonStart.setTextColor(Color.GREEN);
  74. }
  75.  
  76. if (mScooter.getStatus().equals("Свободен")){
  77. mRelativeLayout.setBackgroundColor(getResources().getColor(R.color.color_free));
  78. mToggleButtonStart.setEnabled(true);
  79. mToggleButtonPaid.setEnabled(true);
  80. }else if(mScooter.getStatus().equals("Работает")){
  81. mRelativeLayout.setBackgroundColor(Color.YELLOW);
  82. mToggleButtonStart.setEnabled(true);
  83. mToggleButtonPaid.setEnabled(true);
  84. }else {
  85. mRelativeLayout.setBackgroundColor(getResources().getColor(R.color.color_charging));
  86. mToggleButtonStart.setEnabled(false);
  87. mToggleButtonPaid.setEnabled(false);
  88. }
  89. }
  90.  
  91. @Override
  92. public void onClick(View v) {
  93. switch (v.getId()){
  94. case R.id.list_item_scooter_title_text_view:
  95. Intent intent=ScooterActivity.newIntent(getActivity(),mScooter.getId());
  96. startActivity(intent);
  97. break;
  98. case R.id.list_item_scooter_paid_toggle_button:
  99. if (mToggleButtonPaid.isChecked()==true){
  100. mToggleButtonPaid.setTextColor(Color.GREEN);
  101. mScooter.setPaid(true);
  102. }else {
  103. mToggleButtonPaid.setTextColor(Color.RED);
  104. mScooter.setPaid(false);
  105. }
  106. break;
  107. case R.id.list_item_scooter_start_toggle_button:
  108. if (mToggleButtonStart.isChecked()==true){
  109. mToggleButtonStart.setTextColor(Color.RED);
  110. mRelativeLayout.setBackgroundColor(Color.YELLOW);
  111. mScooter.setStart(true);
  112. mScooter.setStatus("Работает");
  113. mTextViewStatus.setText("Статус скутера: "+mScooter.getStatus());
  114. showTimer(10000);
  115. }else {
  116. mToggleButtonStart.setTextColor(Color.GREEN);
  117. mRelativeLayout.setBackgroundColor(getResources().getColor(R.color.color_free));
  118. mScooter.setStart(false);
  119. mScooter.setStatus("Свободен");
  120. mTextViewStatus.setText("Статус скутера: "+mScooter.getStatus());
  121. mScooter.setDate(0);
  122. //timerStart(2);
  123. if(mTimer!=null){
  124. timerStart(2);
  125. mTimer=null;
  126. }
  127. if(timer!=null){
  128. timer.cancel();
  129. timer=null;
  130. }
  131. }
  132. break;
  133. }
  134. ScooterLab.get(getActivity()).updateScooter(mScooter);
  135. }
  136.  
  137. //таймер отсчета времени
  138. public void showTimer(long countdownMillis) {
  139. if(timer != null) { timer.cancel(); }
  140. timer = new CountDownTimer(countdownMillis, 1000) {
  141. @Override
  142. public void onTick(long millisUntilFinished) {
  143. mDateTextView.setText("Осталось "+String.format("%d мин %d сек",
  144. TimeUnit.MILLISECONDS.toMinutes( millisUntilFinished),
  145. TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) -
  146. TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))));
  147. mScooter.setDate(millisUntilFinished);
  148. ScooterLab.get(getActivity()).updateScooter(mScooter);
  149. }
  150. @Override
  151. public void onFinish() {
  152. mDateTextView.setText("Время вышло!");
  153. String text = "Скутер №"+mScooter.getTitle()+" завершил работу";
  154. mTTS.speak(text, TextToSpeech.QUEUE_FLUSH, null);
  155. timerStart(1);
  156. }
  157. }.start();
  158. }
  159.  
  160.  
  161. //таймер для повторного воспроизведения озвучки
  162. private void timerStart(int i) {
  163. if(mTimer != null) { mTimer.cancel(); }
  164. if (i == 1) {
  165. mTimer = new Timer();
  166. mMyTimerTask = new MyTimerTask();
  167. // delay 1000ms, repeat in 5000ms
  168. mTimer.schedule(mMyTimerTask, 1000, 5000);
  169. } else {
  170. mTimer.cancel();
  171. }
  172. }
  173.  
  174. class MyTimerTask extends TimerTask {
  175. @Override
  176. public void run() {
  177. try {
  178. getActivity().runOnUiThread(new Runnable() {
  179.  
  180. @Override
  181. public void run() {
  182. String text = "Скутер №" + mScooter.getTitle() + " завершил работу";
  183. Toast.makeText(getActivity(), text, Toast.LENGTH_SHORT).show();
  184. mTTS.speak(text, TextToSpeech.QUEUE_FLUSH, null);
  185. }
  186. });
  187. }catch (Exception e){
  188. e.printStackTrace();
  189. }
  190. }
  191. }
  192.  
  193. //озвучка
  194. @Override
  195. public void onInit(int status) {
  196. if (status == TextToSpeech.SUCCESS) {
  197.  
  198. Locale locale = new Locale("ru");
  199.  
  200. int result = mTTS.setLanguage(locale);
  201.  
  202. if (result == TextToSpeech.LANG_MISSING_DATA
  203. || result == TextToSpeech.LANG_NOT_SUPPORTED) {
  204. Log.e("TTS", "Извините, этот язык не поддерживается");
  205. }
  206. } else {
  207. Log.e("TTS", "Ошибка!");
  208. }
  209. }
  210. }
  211.  
  212. private class ScooterAdapter extends RecyclerView.Adapter<ScooterHolder> {
  213.  
  214. private List<Scooter> mScooters;
  215.  
  216. public ScooterAdapter(List<Scooter> scooters) {
  217. mScooters = scooters;
  218. }
  219.  
  220. @Override
  221. public ScooterHolder onCreateViewHolder(ViewGroup parent, int viewType) {
  222. LayoutInflater layoutInflater = LayoutInflater.from(getActivity());
  223. View view = layoutInflater.inflate(R.layout.list_item_scooter, parent, false);
  224. return new ScooterHolder(view);
  225. }
  226.  
  227. @Override
  228. public void onBindViewHolder(ScooterHolder holder, int position) {
  229. Scooter scooter = mScooters.get(position);
  230. holder.bindScooter(scooter);
  231. }
  232.  
  233. @Override
  234. public int getItemCount() {
  235. return mScooters.size();
  236. }
  237.  
  238. public void setScooters(List<Scooter> scooters) {
  239. mScooters= scooters;
  240. }
  241. }
  242.  
  243. long[] times = new long[*количество*]; //можно использовать гибкий ArrayList
  244.  
  245. times[position] = new Date().getTime();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement