xbmc
JNIMainActivity.h
1 /*
2  * Copyright (C) 2015-2018 Team Kodi
3  * This file is part of Kodi - https://kodi.tv
4  *
5  * SPDX-License-Identifier: GPL-2.0-or-later
6  * See LICENSES/README.md for more information.
7  */
8 
9 #pragma once
10 
11 #include <androidjni/Activity.h>
12 #include <androidjni/InputManager.h>
13 #include <androidjni/Rect.h>
14 
15 namespace jni
16 {
17 
18 class CJNIMainActivity : public CJNIActivity, public CJNIInputManagerInputDeviceListener
19 {
20 public:
21  explicit CJNIMainActivity(const ANativeActivity *nativeActivity);
22  ~CJNIMainActivity() override;
23 
24  static CJNIMainActivity* GetAppInstance() { return m_appInstance; }
25 
26  static void RegisterNatives(JNIEnv* env);
27 
28  static void _onNewIntent(JNIEnv *env, jobject context, jobject intent);
29  static void _onActivityResult(JNIEnv *env, jobject context, jint requestCode, jint resultCode, jobject resultData);
30  static void _onVolumeChanged(JNIEnv *env, jobject context, jint volume);
31  static void _doFrame(JNIEnv *env, jobject context, jlong frameTimeNanos);
32  static void _onInputDeviceAdded(JNIEnv *env, jobject context, jint deviceId);
33  static void _onInputDeviceChanged(JNIEnv *env, jobject context, jint deviceId);
34  static void _onInputDeviceRemoved(JNIEnv *env, jobject context, jint deviceId);
35  static void _onVisibleBehindCanceled(JNIEnv *env, jobject context);
36 
37  static void _callNative(JNIEnv *env, jobject context, jlong funcAddr, jlong variantAddr);
38  static void runNativeOnUiThread(void (*callback)(void*), void* variant);
39  static void registerMediaButtonEventReceiver();
40  static void unregisterMediaButtonEventReceiver();
41 
42  CJNIRect getDisplayRect();
43 
44 private:
45  static CJNIMainActivity *m_appInstance;
46 
47 protected:
48  virtual void onNewIntent(CJNIIntent intent)=0;
49  virtual void onActivityResult(int requestCode, int resultCode, CJNIIntent resultData)=0;
50  virtual void onVolumeChanged(int volume)=0;
51  virtual void doFrame(int64_t frameTimeNanos)=0;
52  void onVisibleBehindCanceled() override = 0;
53 
54  virtual void onDisplayAdded(int displayId)=0;
55  virtual void onDisplayChanged(int displayId)=0;
56  virtual void onDisplayRemoved(int displayId)=0;
57 };
58 
59 } // namespace jni
Definition: JNIMainActivity.h:18
Definition: JNIMainActivity.h:15