summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Shumaker <shumakl@purdue.edu>2014-05-03 22:47:09 -0400
committerLuke Shumaker <shumakl@purdue.edu>2014-05-03 22:47:09 -0400
commit1a95ab399441cdf3e67d357df43f1ae1c3616ddd (patch)
tree34ee9067c2d092b56cfea64d4a7660119fc4e9f4
initial commit
-rw-r--r--.classpath9
-rw-r--r--.gitignore2
-rw-r--r--.project33
-rw-r--r--AndroidManifest.xml37
-rw-r--r--libs/android-support-v4.jarbin0 -> 627582 bytes
-rw-r--r--proguard-project.txt20
-rw-r--r--project.properties14
-rw-r--r--res/drawable-hdpi/ic_launcher.pngbin0 -> 9397 bytes
-rw-r--r--res/drawable-mdpi/ic_launcher.pngbin0 -> 5237 bytes
-rw-r--r--res/drawable-xhdpi/ic_launcher.pngbin0 -> 14383 bytes
-rw-r--r--res/layout/ime.xml20
-rw-r--r--res/raw/gesturesbin0 -> 93080 bytes
-rw-r--r--res/values-v11/styles.xml11
-rw-r--r--res/values-v14/styles.xml12
-rw-r--r--res/values/strings.xml7
-rw-r--r--res/values/styles.xml20
-rw-r--r--res/xml/method.xml2
-rw-r--r--src/us/minak/DrawingSpaceView.java60
-rw-r--r--src/us/minak/IMEService.java33
-rw-r--r--src/us/minak/IMEView.java11
-rw-r--r--src/us/minak/OnGestureRecognizedListener.java26
21 files changed, 317 insertions, 0 deletions
diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000..7bc01d9
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="gen"/>
+ <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
+ <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
+ <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
+ <classpathentry kind="output" path="bin/classes"/>
+</classpath>
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..a22392a
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+/bin
+/gen
diff --git a/.project b/.project
new file mode 100644
index 0000000..ef25403
--- /dev/null
+++ b/.project
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>Minak</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>com.android.ide.eclipse.adt.ApkBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>com.android.ide.eclipse.adt.AndroidNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
new file mode 100644
index 0000000..b061ef0
--- /dev/null
+++ b/AndroidManifest.xml
@@ -0,0 +1,37 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="us.minak"
+ android:versionCode="1"
+ android:versionName="1.0" >
+
+ <uses-sdk
+ android:minSdkVersion="8"
+ android:targetSdkVersion="19" />
+
+ <application
+ android:allowBackup="true"
+ android:icon="@drawable/ic_launcher"
+ android:label="@string/app_name"
+ android:theme="@style/AppTheme" >
+
+ <!-- The main input service -->
+ <service android:name="us.minak.IMEService"
+ android:label="@string/minak_ime_label"
+ android:permission="android.permission.BIND_INPUT_METHOD">
+ <intent-filter>
+ <action android:name="android.view.InputMethod" />
+ </intent-filter>
+ <meta-data android:name="android.view.im" android:resource="@xml/method" />
+ </service>
+
+ <!-- The settings menu activity -->
+ <!--
+ <activity android:name="us.minak.SettingsActivity"
+ android:label="@string/minak_settings_label">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ </intent-filter>
+ </activity>
+ -->
+ </application>
+
+</manifest>
diff --git a/libs/android-support-v4.jar b/libs/android-support-v4.jar
new file mode 100644
index 0000000..a7e9919
--- /dev/null
+++ b/libs/android-support-v4.jar
Binary files differ
diff --git a/proguard-project.txt b/proguard-project.txt
new file mode 100644
index 0000000..f2fe155
--- /dev/null
+++ b/proguard-project.txt
@@ -0,0 +1,20 @@
+# To enable ProGuard in your project, edit project.properties
+# to define the proguard.config property as described in that file.
+#
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in ${sdk.dir}/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the ProGuard
+# include property in project.properties.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
diff --git a/project.properties b/project.properties
new file mode 100644
index 0000000..4ab1256
--- /dev/null
+++ b/project.properties
@@ -0,0 +1,14 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system edit
+# "ant.properties", and override values to adapt the script to your
+# project structure.
+#
+# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
+#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
+
+# Project target.
+target=android-19
diff --git a/res/drawable-hdpi/ic_launcher.png b/res/drawable-hdpi/ic_launcher.png
new file mode 100644
index 0000000..96a442e
--- /dev/null
+++ b/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_launcher.png b/res/drawable-mdpi/ic_launcher.png
new file mode 100644
index 0000000..359047d
--- /dev/null
+++ b/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_launcher.png b/res/drawable-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..71c6d76
--- /dev/null
+++ b/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/res/layout/ime.xml b/res/layout/ime.xml
new file mode 100644
index 0000000..510d40a
--- /dev/null
+++ b/res/layout/ime.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<us.minak.IMEView xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <us.minak.DrawingSpaceView
+ android:id="@+id/drawing_space"
+ android:layout_width="wrap_content"
+ android:layout_height="200dp"
+ android:layout_centerInParent="true"
+ android:fadeDuration="300"
+ android:fadeEnabled="true"
+ android:fadeOffset="200"
+ android:gestureColor="#000"
+ android:gestureStrokeAngleThreshold="0.0"
+ android:gestureStrokeLengthThreshold="0.0"
+ android:gestureStrokeSquarenessThreshold="0.0"
+ android:gestureStrokeType="multiple" />
+
+</us.minak.IMEView>
diff --git a/res/raw/gestures b/res/raw/gestures
new file mode 100644
index 0000000..3cc9d7c
--- /dev/null
+++ b/res/raw/gestures
Binary files differ
diff --git a/res/values-v11/styles.xml b/res/values-v11/styles.xml
new file mode 100644
index 0000000..3c02242
--- /dev/null
+++ b/res/values-v11/styles.xml
@@ -0,0 +1,11 @@
+<resources>
+
+ <!--
+ Base application theme for API 11+. This theme completely replaces
+ AppBaseTheme from res/values/styles.xml on API 11+ devices.
+ -->
+ <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
+ <!-- API 11 theme customizations can go here. -->
+ </style>
+
+</resources>
diff --git a/res/values-v14/styles.xml b/res/values-v14/styles.xml
new file mode 100644
index 0000000..a91fd03
--- /dev/null
+++ b/res/values-v14/styles.xml
@@ -0,0 +1,12 @@
+<resources>
+
+ <!--
+ Base application theme for API 14+. This theme completely replaces
+ AppBaseTheme from BOTH res/values/styles.xml and
+ res/values-v11/styles.xml on API 14+ devices.
+ -->
+ <style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
+ <!-- API 14 theme customizations can go here. -->
+ </style>
+
+</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
new file mode 100644
index 0000000..2485e35
--- /dev/null
+++ b/res/values/strings.xml
@@ -0,0 +1,7 @@
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+
+ <string name="app_name">Minak</string>
+ <string name="minak_ime_label">Minak IME Label</string>
+ <string name="minak_settings_label">Minak Settings Label</string>
+
+</resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
new file mode 100644
index 0000000..6ce89c7
--- /dev/null
+++ b/res/values/styles.xml
@@ -0,0 +1,20 @@
+<resources>
+
+ <!--
+ Base application theme, dependent on API level. This theme is replaced
+ by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
+ -->
+ <style name="AppBaseTheme" parent="android:Theme.Light">
+ <!--
+ Theme customizations available in newer API levels can go in
+ res/values-vXX/styles.xml, while customizations related to
+ backward-compatibility can go here.
+ -->
+ </style>
+
+ <!-- Application theme. -->
+ <style name="AppTheme" parent="AppBaseTheme">
+ <!-- All customizations that are NOT specific to a particular API-level can go here. -->
+ </style>
+
+</resources>
diff --git a/res/xml/method.xml b/res/xml/method.xml
new file mode 100644
index 0000000..b8d98ff
--- /dev/null
+++ b/res/xml/method.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<input-method xmlns:android="http://schemas.android.com/apk/res/android" /> \ No newline at end of file
diff --git a/src/us/minak/DrawingSpaceView.java b/src/us/minak/DrawingSpaceView.java
new file mode 100644
index 0000000..7f9c3fa
--- /dev/null
+++ b/src/us/minak/DrawingSpaceView.java
@@ -0,0 +1,60 @@
+/*
+ ********************************************************************************
+ * Copyright (c) 2012 Samsung Electronics, Inc.
+ * All rights reserved.
+ *
+ * This software is a confidential and proprietary information of Samsung
+ * Electronics, Inc. ("Confidential Information"). You shall not disclose such
+ * Confidential Information and shall use it only in accordance with the terms
+ * of the license agreement you entered into with Samsung Electronics.
+ ********************************************************************************
+ */
+
+package us.minak;
+
+import java.util.List;
+
+import android.content.Context;
+import android.gesture.Gesture;
+import android.gesture.GestureLibraries;
+import android.gesture.GestureLibrary;
+import android.gesture.GestureOverlayView;
+import android.gesture.GestureOverlayView.OnGesturePerformedListener;
+import android.gesture.Prediction;
+import android.util.AttributeSet;
+
+/**
+ * Represent a space where drawing gestures are performed.
+ */
+public class DrawingSpaceView extends GestureOverlayView implements OnGesturePerformedListener {
+ private static final double SCORE_TRESHOLD = 3.0;
+ private final GestureLibrary mGestureLibrary;
+ private OnGestureRecognizedListener mOnGestureRecognizedListener;
+
+ public DrawingSpaceView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ mGestureLibrary = GestureLibraries.fromRawResource(context, R.raw.gestures);
+ mGestureLibrary.load();
+ addOnGesturePerformedListener(this);
+ }
+
+ public void setOnGestureRecognizedListener(OnGestureRecognizedListener onGestureRecognizedListener) {
+ mOnGestureRecognizedListener = onGestureRecognizedListener;
+ }
+
+ @Override
+ public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) {
+ final List<Prediction> predictions = mGestureLibrary.recognize(gesture);
+ Prediction bestPrediction = null;
+ if (!predictions.isEmpty()) {
+ bestPrediction = predictions.get(0);
+ }
+ if (mOnGestureRecognizedListener != null && bestPrediction != null) {
+ if (bestPrediction.score > SCORE_TRESHOLD) {
+ mOnGestureRecognizedListener.gestureRecognized(bestPrediction.name);
+ } else {
+ clear(false);
+ }
+ }
+ }
+}
diff --git a/src/us/minak/IMEService.java b/src/us/minak/IMEService.java
new file mode 100644
index 0000000..ba09656
--- /dev/null
+++ b/src/us/minak/IMEService.java
@@ -0,0 +1,33 @@
+package us.minak;
+
+import android.inputmethodservice.InputMethodService;
+import android.view.View;
+import android.view.inputmethod.EditorInfo;
+
+public class IMEService extends InputMethodService {
+ private IMEView imeView;
+ /**
+ * Loads the configuration.
+ */
+ @Override
+ public void onInitializeInterface() {
+ // TODO
+ }
+
+ @Override
+ public View onCreateInputView() {
+ final IMEView view = (IMEView) getLayoutInflater().inflate(R.layout.ime, null);
+
+ // TODO: there probably needs to be more stuff here
+
+ this.imeView = view;
+ return view;
+ }
+
+ /**
+ * Called to inform the input method that text input has started in an editor.
+ */
+ public void onStartInput(EditorInfo info, boolean restarting) {
+ // TODO: get characters from this.imeView, and pass them to getCurrentInputConnection().commitText(..., 1);
+ }
+}
diff --git a/src/us/minak/IMEView.java b/src/us/minak/IMEView.java
new file mode 100644
index 0000000..89d6d0a
--- /dev/null
+++ b/src/us/minak/IMEView.java
@@ -0,0 +1,11 @@
+package us.minak;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.widget.RelativeLayout;
+
+public class IMEView extends RelativeLayout{
+ public IMEView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+}
diff --git a/src/us/minak/OnGestureRecognizedListener.java b/src/us/minak/OnGestureRecognizedListener.java
new file mode 100644
index 0000000..a30e8b8
--- /dev/null
+++ b/src/us/minak/OnGestureRecognizedListener.java
@@ -0,0 +1,26 @@
+/*
+ ********************************************************************************
+ * Copyright (c) 2012 Samsung Electronics, Inc.
+ * All rights reserved.
+ *
+ * This software is a confidential and proprietary information of Samsung
+ * Electronics, Inc. ("Confidential Information"). You shall not disclose such
+ * Confidential Information and shall use it only in accordance with the terms
+ * of the license agreement you entered into with Samsung Electronics.
+ ********************************************************************************
+ */
+
+package us.minak;
+
+/**
+ * A simple interface for handling recognizing a gesture.
+ */
+public interface OnGestureRecognizedListener {
+ /**
+ * Invoked when a gesture is recognized.
+ *
+ * @param character
+ * The character represented by the gesture.
+ */
+ void gestureRecognized(String character);
+}