• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package imgui.example.android
2 
3 import android.app.NativeActivity
4 import android.os.Bundle
5 import android.content.Context
6 import android.view.inputmethod.InputMethodManager
7 import android.view.KeyEvent
8 import java.util.concurrent.LinkedBlockingQueue
9 
10 class MainActivity : NativeActivity() {
onCreatenull11     public override fun onCreate(savedInstanceState: Bundle?) {
12         super.onCreate(savedInstanceState)
13     }
14 
showSoftInputnull15     fun showSoftInput() {
16         val inputMethodManager = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
17         inputMethodManager.showSoftInput(this.window.decorView, 0)
18     }
19 
hideSoftInputnull20     fun hideSoftInput() {
21         val inputMethodManager = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
22         inputMethodManager.hideSoftInputFromWindow(this.window.decorView.windowToken, 0)
23     }
24 
25     // Queue for the Unicode characters to be polled from native code (via pollUnicodeChar())
26     private var unicodeCharacterQueue: LinkedBlockingQueue<Int> = LinkedBlockingQueue()
27 
28     // We assume dispatchKeyEvent() of the NativeActivity is actually called for every
29     // KeyEvent and not consumed by any View before it reaches here
dispatchKeyEventnull30     override fun dispatchKeyEvent(event: KeyEvent): Boolean {
31         if (event.action == KeyEvent.ACTION_DOWN) {
32             unicodeCharacterQueue.offer(event.getUnicodeChar(event.metaState))
33         }
34         return super.dispatchKeyEvent(event)
35     }
36 
pollUnicodeCharnull37     fun pollUnicodeChar(): Int {
38         return unicodeCharacterQueue.poll() ?: 0
39     }
40 }
41