How can you make an in-app buttons that works like the keyboard?
I am trying to load a website(which is coded using javascript) into my app using the webView function. But unfortunately, the interactive design of the website requires the user to type in letters from the computer keyboard. I could easily pull up the keyboard on the android device to type, but it is a bit too inconvenient as I only need to use 5 buttons.
I used Kotlin to try inserting a letter to the webView browser, but I can't find a solution just yet. Is there a way to make a shortcut or a set of a library that allows me to do so? Thank you for your replies.
You'll need to dispatch KeyEvents to the WebView. For example, the following code simulates a left key press.
webView.dispatchKeyEvent(KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_LEFT))
Here's an article for further reference. The list of possible KeyEvent codes is available in the official docs.
Related
I am working on an Android chatting application. I need to show, a smileys or emoji's keyboard, like that of 'Whats App'. Is there any such default keyboard for Android? If yes, how do I implement it?
This largely depends on what the user currently has installed. I use SwiftKey on my phone so I have the ability to use the Emoji's. If you are willing to put in the effort to create your own Emoji keyboard then toobsco42 has a great basic explanation of the process as well as a link to a repo that you can use.
i would say start by getting the font with all the unicode charset for your application and render them in an layout invoked on the button in your input field.
One of the website to create custom fonts : icomoon.io
I'm currently developing an application targeted at android and desktop devices using apache cordova and HTML5.
In order to get the numeric keyboard to pop up I've used input type="number", which works fine.
However, the input field should also accept strings. The current functionality of type=number is that the ui seems to allow for strings to be entered, but the value property of the element is not changed if the input is invalid (e.g not numberic).
Is there a way of getting the numberic keyboard on mobile devices, while still being able to enter text?
My inital tries consisted of capturing the keydown event and manually setting the this.value property. I've tried this using jQuerys .val() and of course the more 'native' approach element.val += char. None of which work. UI is updated, but the change is not reflected in the model.
EDIT
For the next guy trying to achieve this.
1) The HTML solution.
As #LuudJacobs mentions in the comments below; There's currently no way to decide which keyboard is shown except for defining the type-attribute. Though some devices have a button to go back to alphabet keyboard, its not the case for every device. And can not be used reliably.
2) Writing a phonegap/cordova plugin.
It is possible to write a plugin to show and hide the keyboard at will. But, as far as I could find, there is currently no way of programmatically telling it to default to the symbols keyboard. Thus the functionality achieved is similar to using type=number and type=text in the HTML. Another problem with this approach is the diversity of keyboard for android devices, where even users themselves can install their custom keyboard. The functionality of the keyboard can are therefore unknown. What works on one device, may not work on the next.
3) JS/HTML/Canvas solution
Finally... A feasible solution. I suggest taking a look at this walkthrough as it shows an easy way to creating the keyboard using just html and js. Another option would be to use a canvas, and draw the keyboard yourself, but I would imagine that this is more error prone and harder to do.
As explained in the HTML5 spec you can not have anything but valid floats in a input type="number". So You can not. On a sidenote: how would users enter text when they'd only have a numeric keyboard?
Im working in an app to modify the sounds when I key is press in the android soft-keyboard. I have download the sample soft-keyboard from Google. Now Im trying to figure out how to add sound to each or all the keys.
My question is: is it possible to assign a short customize sound to each key?
Can i change this in the already implemented keyboard?
You can't... it's already built and some manufactures provide their own keyboard implementations.
Or should i make my own keyboard?
Yes, you must.
If the latter is the case, how do i do that? Can i find the source code somewhere?
There are some open source projects of Keyboard implementations... for instance:
https://github.com/g1011999/Gingerbread-Keyboard/
http://code.google.com/p/softkeyboard/
There you can learn how to write your own keyboard, which is completely different from writing a conventional app.
My suggestion is to create a new fork of the Gingerbread-Keyboard (this supports Android 2.2 or higher only)... and then implement that specific change you want. For one of my apps I did so, and it's far easier than implementing the keyboard from scratch.
I wish to create my own custom keyboard on android. It seems the below project on google code project should be able to achieve this. But to extension to this what I also want to add is ability to handle browser events when user is using custom keyboard. ie if user clicks on browser address bar or any text box on the page opened I should be able to determine that as well? Is there a way possible?
http://code.google.com/p/android-misc-widgets/source/checkout
Thanks,
nil
I'm not sure what your question is, but I think you are asking how to create a keyboard that is used when the user clicks on textfields in other apps. Is that right?
If you want to create your own virtual keyboard then you should definitely start by reading the Android IME Docs they are really good and even provide code for a example keyboard that you can download.
I've been looking to create a custom keyboard for my application. At first, I started to look at the SoftKeyboard for the SDK examples, but reading the Android Developer Group led me to this post:
This is really not how the input
method framework is supposed to work.
An IME should be a generic input
facility, not for a particular
application. If you need some
app-specific input, you should build
it into your UI rather than pushing
it out to a generic IME.
How do I build an app-specific input within the UI? I mean, is there a way to extend the Keyboard app or something and use it only in my application?
Features needed for the keyboard:
Shift key to display some other keys
Special keys like square root or PI
etc.
PS: an ugly solution could be to make a table of ImageButton for example, but I wanted to make something clean.
I'm not really sure if there's a straight-forward solution to this (to that extent that it is even possible to understand the real reason behind the original question).
As is quoted in the original question:
If you need some app-specific input, you should build it into your UI
rather than pushing it out to a generic IME.
What is meant by that, is not that you within your app should try to build in such input features by extending or modifying the soft keyboard on the phone. There are so many different soft keyboards (and basically, the soft keyboard is just another app), since most phone manufacturers create their own version, and people download 3rd party keyboards (such as Swype or SwiftKey etc.), and I can't picture there being a way for you to "hack" into those to add a few buttons or whatever it is you want (which could also be a major security hole, another reason why it probably isn't possible).
What instead the above quote suggests, is that you have to create some other form of input besides the keyboard. One such example, and a very good one if I might add, is how the RealCalc Scientific Calculator looks:
Now this isn't open source, so I can only guess how the code looks like (but it shouldn't be too hard a guess either): in its simplest form, this is just a grid with lots of buttons. Each button handles the onClick event, which would mean performing some kind of action (changing the label on some other buttons, showing a menu, displaying some text in the upper label or whatever), and that's probably pretty much what's to it. And of course, the phone's soft keyboard is never displayed (since you don't need a keyboard with all those buttons (and also there aren't any input fields to write anything in)).
It all boils down to the already mentioned quote: If you need some app-specific input, you should build it into your UI. Or in other words: create buttons (and don't display the soft keyboard if you don't need it) and make things happen when you click them.
And just to have mentioned it: if you do want to create your own IME (which I strongly believe is not the case here), you should have a look at the following resources:
Onscreen Input Methods
Creating an Input Method
Soft Keyboard sample
In my humble opinion you should take a look at the beginning of reference about keyboard and keyboard view http://developer.android.com/reference/android/inputmethodservice/Keyboard.html and http://developer.android.com/reference/android/inputmethodservice/KeyboardView.html.
There you can see an example of defining keyboard using XML file. I think that this is what you are looking for.
As mentioned by #sebap123
Keyboard and KeyboardView class are the one you need to use,
Further, for Implementation, here is a quick detailed guide.