Add hello spell checker sample client app
Bug: 4973788
Change-Id: I938ba499c35d91f2e9dbcd00ae0df64c999b2b95
diff --git a/samples/SpellChecker/Android.mk b/samples/SpellChecker/Android.mk
new file mode 100644
index 0000000..5053e7d
--- /dev/null
+++ b/samples/SpellChecker/Android.mk
@@ -0,0 +1 @@
+include $(call all-subdir-makefiles)
diff --git a/samples/SpellChecker/HelloSpellChecker/Android.mk b/samples/SpellChecker/HelloSpellChecker/Android.mk
new file mode 100755
index 0000000..1c76f23
--- /dev/null
+++ b/samples/SpellChecker/HelloSpellChecker/Android.mk
@@ -0,0 +1,12 @@
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := samples
+
+LOCAL_SRC_FILES := $(call all-subdir-java-files)
+
+LOCAL_SDK_VERSION := current
+
+LOCAL_PACKAGE_NAME := HelloSpellChecker
+
+include $(BUILD_PACKAGE)
diff --git a/samples/SpellChecker/HelloSpellChecker/AndroidManifest.xml b/samples/SpellChecker/HelloSpellChecker/AndroidManifest.xml
new file mode 100644
index 0000000..0a6b906
--- /dev/null
+++ b/samples/SpellChecker/HelloSpellChecker/AndroidManifest.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2011, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.example.android.hellospellchecker"
+ android:versionCode="1"
+ android:versionName="1.0" >
+
+ <uses-sdk android:minSdkVersion="14" />
+
+ <application
+ android:label="@string/app_name" >
+ <activity
+ android:label="@string/app_name"
+ android:name=".HelloSpellCheckerActivity" >
+ <intent-filter >
+ <action android:name="android.intent.action.MAIN" />
+
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ </application>
+
+</manifest>
diff --git a/samples/SpellChecker/HelloSpellChecker/_index.html b/samples/SpellChecker/HelloSpellChecker/_index.html
new file mode 100755
index 0000000..414c629
--- /dev/null
+++ b/samples/SpellChecker/HelloSpellChecker/_index.html
@@ -0,0 +1,5 @@
+<p>A simple activity that requests spelling suggestions from a spell checker service, using the <code><a
+href="../../../reference/android/view/textservice/TextServicesManager.html">TextServicesManager</a></code>
+and <code><a href="../../../reference/android/view/textservice/SpellCheckerSession.html">SpellCheckerSession</a></code>
+APIs introduced in Android 4.0 (API level 14).</p>
+<p>For an example that implements a custom spell checker service, see the <a href="../SampleSpellCheckerService/index.html">Spell Checker</a> sample app.</p>
diff --git a/samples/SpellChecker/HelloSpellChecker/res/layout/main.xml b/samples/SpellChecker/HelloSpellChecker/res/layout/main.xml
new file mode 100644
index 0000000..3d443e4
--- /dev/null
+++ b/samples/SpellChecker/HelloSpellChecker/res/layout/main.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2011, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:orientation="vertical" >
+
+ <TextView
+ android:id="@+id/main"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content" />
+
+</LinearLayout>
diff --git a/samples/SpellChecker/HelloSpellChecker/res/values/strings.xml b/samples/SpellChecker/HelloSpellChecker/res/values/strings.xml
new file mode 100644
index 0000000..fbcb2db
--- /dev/null
+++ b/samples/SpellChecker/HelloSpellChecker/res/values/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2011, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<resources>
+
+ <string name="app_name">HelloSpellChecker</string>
+
+</resources>
diff --git a/samples/SpellChecker/HelloSpellChecker/src/com/example/android/hellospellchecker/HelloSpellCheckerActivity.java b/samples/SpellChecker/HelloSpellChecker/src/com/example/android/hellospellchecker/HelloSpellCheckerActivity.java
new file mode 100644
index 0000000..6550981
--- /dev/null
+++ b/samples/SpellChecker/HelloSpellChecker/src/com/example/android/hellospellchecker/HelloSpellCheckerActivity.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.hellospellchecker;
+
+import android.app.Activity;
+import android.content.Context;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.textservice.SpellCheckerSession;
+import android.view.textservice.SuggestionsInfo;
+import android.view.textservice.TextInfo;
+import android.view.textservice.TextServicesManager;
+import android.view.textservice.SpellCheckerSession.SpellCheckerSessionListener;
+import android.widget.TextView;
+import java.lang.StringBuilder;
+
+public class HelloSpellCheckerActivity extends Activity implements SpellCheckerSessionListener {
+ private static final String TAG = HelloSpellCheckerActivity.class.getSimpleName();
+ private TextView mMainView;
+ private SpellCheckerSession mScs;
+ /** Called when the activity is first created. */
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.main);
+ mMainView = (TextView)findViewById(R.id.main);
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ final TextServicesManager tsm = (TextServicesManager) getSystemService(
+ Context.TEXT_SERVICES_MANAGER_SERVICE);
+ mScs = tsm.newSpellCheckerSession(null, null, this, true);
+ if (mScs != null) {
+ // Instantiate TextInfo for each query
+ // TextInfo can be passed a sequence number and a cookie number to identify the result
+ mScs.getSuggestions(new TextInfo("tgis"), 3);
+ mScs.getSuggestions(new TextInfo("hllo"), 3);
+ mScs.getSuggestions(new TextInfo("helloworld"), 3);
+ } else {
+ Log.e(TAG, "Couldn't obtain the spell checker service.");
+ }
+ }
+
+ @Override
+ public void onPause() {
+ super.onPause();
+ if (mScs != null) {
+ mScs.close();
+ }
+ }
+
+ @Override
+ public void onGetSuggestions(final SuggestionsInfo[] arg0) {
+ final StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < arg0.length; ++i) {
+ // Returned suggestions are contained in SuggestionsInfo
+ final int len = arg0[i].getSuggestionsCount();
+ sb.append('\n');
+ for (int j = 0; j < len; ++j) {
+ sb.append("," + arg0[i].getSuggestionAt(j));
+ }
+ sb.append(" (" + len + ")");
+ }
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ mMainView.append(sb.toString());
+ }
+ });
+ }
+}
diff --git a/samples/SpellChecker/SampleSpellCheckerService/Android.mk b/samples/SpellChecker/SampleSpellCheckerService/Android.mk
new file mode 100755
index 0000000..adf65d9
--- /dev/null
+++ b/samples/SpellChecker/SampleSpellCheckerService/Android.mk
@@ -0,0 +1,12 @@
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := samples
+
+LOCAL_SRC_FILES := $(call all-subdir-java-files)
+
+LOCAL_SDK_VERSION := current
+
+LOCAL_PACKAGE_NAME := SampleSpellChecker
+
+include $(BUILD_PACKAGE)
diff --git a/samples/SpellChecker/SampleSpellCheckerService/AndroidManifest.xml b/samples/SpellChecker/SampleSpellCheckerService/AndroidManifest.xml
new file mode 100644
index 0000000..fcb1671
--- /dev/null
+++ b/samples/SpellChecker/SampleSpellCheckerService/AndroidManifest.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2011, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.example.android.samplespellcheckerservice" >
+
+ <uses-sdk android:minSdkVersion="14"/>
+ <application
+ android:label="@string/app_name" >
+ <service
+ android:label="@string/app_name"
+ android:name=".SampleSpellCheckerService"
+ android:permission="android.permission.BIND_TEXT_SERVICE" >
+ <intent-filter >
+ <action android:name="android.service.textservice.SpellCheckerService" />
+ </intent-filter>
+
+ <meta-data
+ android:name="android.view.textservice.scs"
+ android:resource="@xml/spellchecker" />
+ </service>
+
+ <activity
+ android:label="@string/sample_settings"
+ android:name="SpellCheckerSettingsActivity" >
+ <intent-filter >
+ <action android:name="android.intent.action.MAIN" />
+ </intent-filter>
+ </activity>
+ </application>
+
+</manifest>
diff --git a/samples/SpellChecker/SampleSpellCheckerService/_index.html b/samples/SpellChecker/SampleSpellCheckerService/_index.html
new file mode 100755
index 0000000..d6dada9
--- /dev/null
+++ b/samples/SpellChecker/SampleSpellCheckerService/_index.html
@@ -0,0 +1,5 @@
+<p>A sample showing how to create a spell checker with the <code><a
+href="../../../reference/android/service/textservice/SpellCheckerService.html">SpellCheckerService</a></code>
+APIs introduced in Android 4.0 (API level 14).</p>
+<p>This app does not have a launcher activity. Once you install it, go to the system's input settings and enable
+"Sample correction" as the spelling correction service. </p>
diff --git a/samples/SpellChecker/SampleSpellCheckerService/res/values/strings.xml b/samples/SpellChecker/SampleSpellCheckerService/res/values/strings.xml
new file mode 100644
index 0000000..79da5c6
--- /dev/null
+++ b/samples/SpellChecker/SampleSpellCheckerService/res/values/strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2011, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<resources>
+ <string name="app_name">SampleSpellCheckerService</string>
+ <string name="spellchecker_name">Sample correction</string>
+ <string name="subtype_generic" translatable="false">%s</string>
+ <string name="sample_settings">Sample settings</string>
+ <string name="sample_preference">Sample preference</string>
+</resources>
\ No newline at end of file
diff --git a/samples/SpellChecker/SampleSpellCheckerService/res/xml/spell_checker_settings.xml b/samples/SpellChecker/SampleSpellCheckerService/res/xml/spell_checker_settings.xml
new file mode 100644
index 0000000..e04d50e
--- /dev/null
+++ b/samples/SpellChecker/SampleSpellCheckerService/res/xml/spell_checker_settings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:title="@string/sample_settings">
+ <CheckBoxPreference
+ android:title="@string/sample_preference"
+ android:persistent="true"
+ android:defaultValue="true" />
+</PreferenceScreen>
diff --git a/samples/SpellChecker/SampleSpellCheckerService/res/xml/spellchecker.xml b/samples/SpellChecker/SampleSpellCheckerService/res/xml/spellchecker.xml
new file mode 100644
index 0000000..f4601d2
--- /dev/null
+++ b/samples/SpellChecker/SampleSpellCheckerService/res/xml/spellchecker.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2011, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+
+<!-- The attributes in this XML file provide the configuration information -->
+<!-- for the spell checker -->
+
+<spell-checker xmlns:android="http://schemas.android.com/apk/res/android"
+ android:label="@string/spellchecker_name"
+ android:settingsActivity="com.example.android.samplespellcheckerservice.SpellCheckerSettingsActivity">
+ <subtype
+ android:label="@string/subtype_generic"
+ android:subtypeLocale="en"
+ />
+</spell-checker>
diff --git "a/samples/SpellChecker/SampleSpellCheckerService/src/com/example/android/samplespellcheckerservice/\043SampleSpellCheckerService.java\043" "b/samples/SpellChecker/SampleSpellCheckerService/src/com/example/android/samplespellcheckerservice/\043SampleSpellCheckerService.java\043"
new file mode 100644
index 0000000..dc85587
--- /dev/null
+++ "b/samples/SpellChecker/SampleSpellCheckerService/src/com/example/android/samplespellcheckerservice/\043SampleSpellCheckerService.java\043"
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.samplespellcheckerservice;
+
+import android.service.textservice.SpellCheckerService;
+import android.util.Log;
+import android.view.textservice.SuggestionsInfo;
+import android.view.textservice.TextInfo;
+
+public class SampleSpellCheckerService extends SpellCheckerService {
+ private static final String TAG = SampleSpellCheckerService.class.getSimpleName();
+ private static final boolean DBG = true;
+ @Override
+ public Session createSession() {
+ return new AndroidSpellCheckerSession();
+ }
+
+ private static class AndroidSpellCheckerSession extends Session {
+ private String mLocale;
+ @Override
+ public void onCreate() {
+ mLocale = getLocale();
+ }
+
+ @Override
+ public SuggestionsInfo onGetSuggestions(TextInfo textInfo, int suggestionsLimit) {
+ if (DBG) {
+ Log.d(TAG, "onGetSuggestions: " + textInfo.getText());
+ }
+ final String input = textInfo.getText();
+ final int length = input.length();
+ // Just a fake logic:
+ // length <= 3 for short words that we assume are in the fake dictionary
+ // length > 20 for too long words that we assume can't be recognized (such as CJK words)
+ final int flags = length <= 3 ? SuggestionsInfo.RESULT_ATTR_IN_THE_DICTIONARY
+ : length <= 20 ? SuggestionsInfo.RESULT_ATTR_LOOKS_LIKE_TYPO : 0;
+ return new SuggestionsInfo(flags,
+ new String[] {"aaa", "bbb", "Candidate for " + input, mLocale});
+ }
+ }
+}
diff --git a/samples/SpellChecker/SampleSpellCheckerService/src/com/example/android/samplespellcheckerservice/SampleSpellCheckerService.java b/samples/SpellChecker/SampleSpellCheckerService/src/com/example/android/samplespellcheckerservice/SampleSpellCheckerService.java
new file mode 100644
index 0000000..dc85587
--- /dev/null
+++ b/samples/SpellChecker/SampleSpellCheckerService/src/com/example/android/samplespellcheckerservice/SampleSpellCheckerService.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.samplespellcheckerservice;
+
+import android.service.textservice.SpellCheckerService;
+import android.util.Log;
+import android.view.textservice.SuggestionsInfo;
+import android.view.textservice.TextInfo;
+
+public class SampleSpellCheckerService extends SpellCheckerService {
+ private static final String TAG = SampleSpellCheckerService.class.getSimpleName();
+ private static final boolean DBG = true;
+ @Override
+ public Session createSession() {
+ return new AndroidSpellCheckerSession();
+ }
+
+ private static class AndroidSpellCheckerSession extends Session {
+ private String mLocale;
+ @Override
+ public void onCreate() {
+ mLocale = getLocale();
+ }
+
+ @Override
+ public SuggestionsInfo onGetSuggestions(TextInfo textInfo, int suggestionsLimit) {
+ if (DBG) {
+ Log.d(TAG, "onGetSuggestions: " + textInfo.getText());
+ }
+ final String input = textInfo.getText();
+ final int length = input.length();
+ // Just a fake logic:
+ // length <= 3 for short words that we assume are in the fake dictionary
+ // length > 20 for too long words that we assume can't be recognized (such as CJK words)
+ final int flags = length <= 3 ? SuggestionsInfo.RESULT_ATTR_IN_THE_DICTIONARY
+ : length <= 20 ? SuggestionsInfo.RESULT_ATTR_LOOKS_LIKE_TYPO : 0;
+ return new SuggestionsInfo(flags,
+ new String[] {"aaa", "bbb", "Candidate for " + input, mLocale});
+ }
+ }
+}
diff --git a/samples/SpellChecker/SampleSpellCheckerService/src/com/example/android/samplespellcheckerservice/SpellCheckerSettingsActivity.java b/samples/SpellChecker/SampleSpellCheckerService/src/com/example/android/samplespellcheckerservice/SpellCheckerSettingsActivity.java
new file mode 100644
index 0000000..f223ef7
--- /dev/null
+++ b/samples/SpellChecker/SampleSpellCheckerService/src/com/example/android/samplespellcheckerservice/SpellCheckerSettingsActivity.java
@@ -0,0 +1,39 @@
+/**
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.example.android.samplespellcheckerservice;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.preference.PreferenceActivity;
+
+/**
+ * Spell checker preference screen.
+ */
+public class SpellCheckerSettingsActivity extends PreferenceActivity {
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ }
+
+ @Override
+ public Intent getIntent() {
+ final Intent modIntent = new Intent(super.getIntent());
+ modIntent.putExtra(EXTRA_SHOW_FRAGMENT, SpellCheckerSettingsFragment.class.getName());
+ modIntent.putExtra(EXTRA_NO_HEADERS, true);
+ return modIntent;
+ }
+}
diff --git a/samples/SpellChecker/SampleSpellCheckerService/src/com/example/android/samplespellcheckerservice/SpellCheckerSettingsFragment.java b/samples/SpellChecker/SampleSpellCheckerService/src/com/example/android/samplespellcheckerservice/SpellCheckerSettingsFragment.java
new file mode 100644
index 0000000..cd2efcc
--- /dev/null
+++ b/samples/SpellChecker/SampleSpellCheckerService/src/com/example/android/samplespellcheckerservice/SpellCheckerSettingsFragment.java
@@ -0,0 +1,38 @@
+/**
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.example.android.samplespellcheckerservice;
+
+import android.os.Bundle;
+import android.preference.PreferenceFragment;
+
+/**
+ * Preference screen.
+ */
+public class SpellCheckerSettingsFragment extends PreferenceFragment {
+
+ /**
+ * Empty constructor for fragment generation.
+ */
+ public SpellCheckerSettingsFragment() {
+ }
+
+ @Override
+ public void onActivityCreated(Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+ addPreferencesFromResource(R.xml.spell_checker_settings);
+ }
+}
diff --git a/samples/SpellChecker/_index.html b/samples/SpellChecker/_index.html
new file mode 100644
index 0000000..d60c8ca
--- /dev/null
+++ b/samples/SpellChecker/_index.html
@@ -0,0 +1 @@
+<p>A set of samples that demonstrate how to create/use spell checker APIs.</p>