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 class CJNIMainActivity : public CJNIActivity, public CJNIInputManagerInputDeviceListener
16 {
17 public:
18  explicit CJNIMainActivity(const ANativeActivity *nativeActivity);
19  ~CJNIMainActivity() override;
20 
21  static CJNIMainActivity* GetAppInstance() { return m_appInstance; }
22 
23  static void _onNewIntent(JNIEnv *env, jobject context, jobject intent);
24  static void _onActivityResult(JNIEnv *env, jobject context, jint requestCode, jint resultCode, jobject resultData);
25  static void _onVolumeChanged(JNIEnv *env, jobject context, jint volume);
26  static void _doFrame(JNIEnv *env, jobject context, jlong frameTimeNanos);
27  static void _onInputDeviceAdded(JNIEnv *env, jobject context, jint deviceId);
28  static void _onInputDeviceChanged(JNIEnv *env, jobject context, jint deviceId);
29  static void _onInputDeviceRemoved(JNIEnv *env, jobject context, jint deviceId);
30  static void _onVisibleBehindCanceled(JNIEnv *env, jobject context);
31 
32  static void _callNative(JNIEnv *env, jobject context, jlong funcAddr, jlong variantAddr);
33  static void runNativeOnUiThread(void (*callback)(void*), void* variant);
34  static void registerMediaButtonEventReceiver();
35  static void unregisterMediaButtonEventReceiver();
36 
37  CJNIRect getDisplayRect();
38 
39 private:
40  static CJNIMainActivity *m_appInstance;
41 
42 protected:
43  virtual void onNewIntent(CJNIIntent intent)=0;
44  virtual void onActivityResult(int requestCode, int resultCode, CJNIIntent resultData)=0;
45  virtual void onVolumeChanged(int volume)=0;
46  virtual void doFrame(int64_t frameTimeNanos)=0;
47  void onVisibleBehindCanceled() override = 0;
48 
49  virtual void onDisplayAdded(int displayId)=0;
50  virtual void onDisplayChanged(int displayId)=0;
51  virtual void onDisplayRemoved(int displayId)=0;
52 };
Definition: JNIMainActivity.h:15