1.手势
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 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();
}
}
}
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
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 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();
}
}
}
}