Android中的人机交互技术
来源:互联网 发布:数据库工程师难考吗 编辑:程序博客网 时间:2024/05/16 16:05
1.手势
- java代码
package com.gst.user.myapplication;import android.gesture.Gesture;import android.gesture.GestureLibraries;import android.gesture.GestureLibrary;import android.gesture.GestureOverlayView;import android.gesture.Prediction;import android.os.Bundle;import android.support.design.widget.FloatingActionButton;import android.support.design.widget.Snackbar;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.Toolbar;import android.util.Log;import android.view.View;import android.widget.Toast;import java.util.ArrayList;public class GestureActivity extends AppCompatActivity implements GestureOverlayView.OnGesturePerformedListener{ private static final String TAG = "GestureActivity"; GestureOverlayView gestureOverlayView; GestureLibrary gestureLibrary; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_gesture); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); gestureOverlayView=(GestureOverlayView)findViewById(R.id.gestureOverlayView);// gestureLibrary= GestureLibraries.fromRawResource(this, R.raw.gestures); gestureLibrary=GestureLibraries.fromFile("/sdcard/mygestures"); if (gestureLibrary.load()) { Toast.makeText(this,"加载文件成功",Toast.LENGTH_SHORT).show(); gestureOverlayView.addOnGesturePerformedListener(this); }else { Toast.makeText(this,"加载文件异常",Toast.LENGTH_SHORT).show(); } } @Override public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) { ArrayList<Prediction> predictions=gestureLibrary.recognize(gesture); if (predictions.size()>0) { StringBuffer stringBuffer=new StringBuffer(); int n=0; for (int i = 0; i < predictions.size(); i++) { Prediction prediction=predictions.get(i); if (prediction.score>1) { stringBuffer.append("score:" + prediction.score + " name:" + prediction.name ); n++; } Log.d(TAG,"score:" + prediction.score + " name:" + prediction.name); } stringBuffer.insert(0,n + "个相匹配的手势.\n"); Toast.makeText(this,stringBuffer,Toast.LENGTH_SHORT).show(); } }}
- 布局文件
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:showIn="@layout/activity_gesture" tools:context="com.gst.user.myapplication.GestureActivity"> <android.gesture.GestureOverlayView android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/gestureOverlayView" android:gestureStrokeType="multiple" android:layout_centerVertical="true" android:layout_alignParentStart="true"></android.gesture.GestureOverlayView></RelativeLayout>
2.多点触摸
package com.gst.user.myapplication;import android.os.Bundle;import android.support.design.widget.FloatingActionButton;import android.support.design.widget.Snackbar;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.Toolbar;import android.util.Log;import android.view.MotionEvent;import android.view.View;import com.lidroid.xutils.util.LogUtils;public class MutiTouchActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_muti_touch); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); } @Override public boolean onTouchEvent(MotionEvent event) { if (event.getPointerCount()>=2&&event.getAction()==MotionEvent.ACTION_MOVE) { int historySize=event.getHistorySize(); if (historySize==0){ return true; } float currentY1=event.getY(0); float historyY1=event.getHistoricalY(0, historySize - 1); float currentY2=event.getY(1); float historyY2=event.getHistoricalY(1, historySize - 1); float distance=Math.abs(currentY1 - currentY2); float historyDistance=Math.abs(historyY1-historyY2); if (distance > historyDistance) { LogUtils.d("放大"); }else if (distance < historyDistance) { LogUtils.d("缩小"); }else { LogUtils.d("平行"); } } return super.onTouchEvent(event); }}3.语音识别及TTS
- java代码
package com.gst.user.myapplication;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.speech.RecognizerIntent;import android.speech.tts.TextToSpeech;import android.support.design.widget.FloatingActionButton;import android.support.design.widget.Snackbar;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.Toolbar;import android.view.View;import android.widget.TextView;import android.widget.Toast;import java.util.ArrayList;import java.util.Locale;public class VoiceRecognizeActivity extends AppCompatActivity implements TextToSpeech.OnInitListener { private static final int RequestCode=1; private TextToSpeech textToSpeech; TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_voice_recognize); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); textView=(TextView)findViewById(R.id.textView); textToSpeech=new TextToSpeech(this,this); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode==RequestCode&&resultCode== Activity.RESULT_OK){ ArrayList<String> result=data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); if (result.size()>0){ Toast.makeText(VoiceRecognizeActivity.this,result.get(0),Toast.LENGTH_LONG).show(); } } super.onActivityResult(requestCode, resultCode, data); } public void onClickVoiceRecongnize(View view){ Intent intent=new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH); intent.putExtra(RecognizerIntent.EXTRA_PROMPT,"语音输入"); startActivityForResult(intent, RequestCode); } public void onClickTTS(View view){ textToSpeech.speak(textView.getText().toString(),TextToSpeech.QUEUE_FLUSH,null); } @Override public void onInit(int status) { if (status == TextToSpeech.SUCCESS) { int result=textToSpeech.setLanguage(Locale.US); if (result==TextToSpeech.LANG_MISSING_DATA ||result==TextToSpeech.LANG_NOT_SUPPORTED){ Toast.makeText(this, "Language is not available.", Toast.LENGTH_SHORT).show(); } } }}
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:showIn="@layout/activity_voice_recognize" tools:context="com.gst.user.myapplication.VoiceRecognizeActivity"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/voice_recognize" android:id="@+id/button" android:onClick="onClickVoiceRecongnize" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="朗读" android:onClick="onClickTTS" android:id="@+id/button2" android:layout_below="@+id/button" android:layout_centerHorizontal="true" android:layout_marginTop="49dp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:text="@string/text" android:id="@+id/textView" android:layout_centerVertical="true" android:layout_centerHorizontal="true" /></RelativeLayout>
0 0
- Android中的人机交互技术
- 人机交互技术概论
- 人机交互技术概论
- 人机交互技术概论
- 当今先进的人机交互技术
- 人机交互未来:技术先靠边站!
- 山东大学人机交互技术复习纲要
- 人机交互
- 人机交互
- 人机交互
- 人机交互
- ObjectARX 人机交互技术模拟原型程序介绍
- 印度牛人的人机交互技术
- 人机交互:让IT技术融入社会生活
- nios项目中的小型人机交互代码分析
- android 官方文档人机交互指南在线翻译
- android 人机交互聊天,数据封装,异步通讯
- Android中的prelink技术
- iOS8Extension之Today插件
- 你所不知的 CSS ::before 和 ::after 伪元素用法
- 阅读记录
- android canvas save 和 restore 用法
- vbird笔记2016-02-19
- Android中的人机交互技术
- android中的arrayadapter的三种常用用法
- VMware 下安装的Ubuntu14.04无法连接网络
- MySQL语法总结(TEST)(暂无阅读价值)
- 服务器监控之Zabbix自带模块监控Mysql服务篇
- 告诉你dispatch_queue_set_specific和dispatch_get_specific是个什么鬼
- Android数据库高手秘籍(一)——SQLite命令
- leetcode笔记:Missing Number
- Java Web中cookie和session详解