Да.Короче.Не отличная идея, но технически осуществимая.Позвольте мне познакомить вас с быстрым примером проекта, адаптированным из примера SoftKeyboard, включенного в Android SDK.Теперь есть ряд других технических проблем, которые нужно решить, но это должно предоставить вам базовую отправную точку ....
Для начала давайте создадим базовую раскладку для использования в качестве нашей клавиатуры:
\ res \ layout \ input.xml:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<WebView
android:id="@+id/myWebView"
android:layout_width="match_parent"
android:layout_height="600dp"
/>
</FrameLayout>
это требуется для Android, чтобы принять наш IME
\ res \ xml \ method.xml:
<?xml version="1.0" encoding="utf-8"?>
<input-method xmlns:android="http://schemas.android.com/apk/res/android" />
теперь на нашем манифесте \ AndroidManifest.xml
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.softkeyboard">
<uses-sdk android:minSdkVersion="13" android:targetSdkVersion="13" />
<uses-permission android:name="android.permission.INTERNET" />
<application android:label="SoftKeyboard">
<service
android:name="SoftKeyboard"
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>
</application>
</manifest>
очевидно, что uses-sdk
и user-permission
соответствуют приложению и не требуются этим кодом (я не использую здесь какие-либо интернет-файлы, но вы могли бы, я проверил это, и это сработало ...)
теперь определим простую клавиатуру \ src ... \ SoftKeyboard.java:
package com.example.android.softkeyboard;
import android.inputmethodservice.InputMethodService;
import android.inputmethodservice.KeyboardView;
import android.view.View;
import android.webkit.WebView;
public class SoftKeyboard extends InputMethodService implements KeyboardView.OnKeyboardActionListener {
private WebView myWebView = null;
@Override
public View onCreateInputView() {
View view = getLayoutInflater().inflate(R.layout.input, null);
myWebView = (WebView) view.findViewById(R.id.myWebView);
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.addJavascriptInterface(jsInterface, "android");
return view;
}
private Object jsInterface = new Object() {
@SuppressWarnings("unused")
public void sendKeys() {
getCurrentInputConnection().setComposingText("how do ya like me now?", 1);
}
};
@Override
public void onWindowShown() {
super.onWindowShown();
myWebView.loadUrl("file:///android_asset/keyboard_test.html");
}
@Override
public void onKey(int primaryCode, int[] keyCodes) {}
@Override
public void onPress(int primaryCode) {}
@Override
public void onRelease(int primaryCode) {}
@Override
public void onText(CharSequence text) {}
@Override
public void swipeDown() {}
@Override
public void swipeLeft() {}
@Override
public void swipeRight() {}
@Override
public void swipeUp() {}
}
здесь мы в основном создаем веб-представление, затем заполняемэто из файла актива и привязать к нему простой интерфейс после включения javascript
вот HTML-код актива: * \ assets \ keyboard_test.html *
<!DOCTYPE html>
<html>
<head>
<title>test</title>
<style>
button {
display:block;
margin:300px auto;
width:400px;
padding:60px;
}
</style>
</head>
<body>
<button onclick="android.sendKeys()">yeah buddy!</button>
</body>
</html>
иэто все, руи вы получите клавиатуру с одной кнопкой, и когда вы ее нажмете, javascript отправит текст в композитор ввода ...
надеюсь, что это поможет -ck