diff options
author | montellese <montellese@xbmc.org> | 2016-02-09 12:45:50 +0100 |
---|---|---|
committer | Garrett Brown <themagnificentmrb@gmail.com> | 2016-03-10 21:33:33 -0800 |
commit | ea11320ea8208f6c6c11356180db7e607a2fd5a7 (patch) | |
tree | 26f354dbc99eb920ed7e64ca4fdfdb1679eb4c02 | |
parent | d09d579debe6ae60eeabe29ec3dbe08dd780567f (diff) |
[android] add JNI wrapper for android.hardware.input.InputManager, a Java/native implementation of InputManager.InputDeviceListener and an IInputDeviceCallbacks interface to be able to receive callbacks when input devices change
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | configure.ac | 1 | ||||
-rw-r--r-- | tools/android/packaging/xbmc/src/org/xbmc/kodi/Main.java.in | 11 | ||||
-rw-r--r-- | tools/android/packaging/xbmc/src/org/xbmc/kodi/XBMCInputDeviceListener.java.in | 29 | ||||
-rw-r--r-- | xbmc/platform/android/activity/IInputDeviceCallbacks.h | 33 | ||||
-rw-r--r-- | xbmc/platform/android/activity/JNIMainActivity.cpp | 27 | ||||
-rw-r--r-- | xbmc/platform/android/activity/JNIMainActivity.h | 6 | ||||
-rw-r--r-- | xbmc/platform/android/activity/XBMCApp.cpp | 52 | ||||
-rw-r--r-- | xbmc/platform/android/activity/XBMCApp.h | 18 | ||||
-rw-r--r-- | xbmc/platform/android/activity/android_main.cpp | 12 | ||||
-rw-r--r-- | xbmc/platform/android/jni/InputManager.cpp | 92 | ||||
-rw-r--r-- | xbmc/platform/android/jni/InputManager.h | 57 | ||||
-rw-r--r-- | xbmc/platform/android/jni/Makefile.in | 1 | ||||
-rw-r--r-- | xbmc/platform/android/jni/View.cpp | 2 | ||||
-rw-r--r-- | xbmc/platform/android/jni/View.h | 2 |
15 files changed, 340 insertions, 4 deletions
diff --git a/.gitignore b/.gitignore index f4c2e271a1..fb8f54922f 100644 --- a/.gitignore +++ b/.gitignore @@ -333,6 +333,7 @@ lib/cpluff/stamp-h1 /tools/android/packaging/xbmc/src/org/xbmc/kodi/Main.java /tools/android/packaging/xbmc/src/org/xbmc/kodi/Splash.java /tools/android/packaging/xbmc/src/org/xbmc/kodi/XBMCBroadcastReceiver.java +/tools/android/packaging/xbmc/src/org/xbmc/kodi/XBMCInputDeviceListener.java /tools/android/packaging/xbmc/src/org/xbmc/kodi/XBMCOnAudioFocusChangeListener.java /tools/android/packaging/xbmc/src/org/xbmc/kodi/XBMCOnFrameAvailableListener.java /tools/android/packaging/xbmc/src/org/xbmc/kodi/XBMCSettingsContentObserver.java diff --git a/configure.ac b/configure.ac index c7985c6d81..d1e443d20a 100644 --- a/configure.ac +++ b/configure.ac @@ -2237,6 +2237,7 @@ OUTPUT_FILES="Makefile \ tools/android/packaging/xbmc/src/org/xbmc/kodi/Splash.java \ tools/android/packaging/xbmc/src/org/xbmc/kodi/Main.java \ tools/android/packaging/xbmc/src/org/xbmc/kodi/XBMCBroadcastReceiver.java \ + tools/android/packaging/xbmc/src/org/xbmc/kodi/XBMCInputDeviceListener.java \ tools/android/packaging/xbmc/src/org/xbmc/kodi/XBMCOnFrameAvailableListener.java \ tools/android/packaging/xbmc/src/org/xbmc/kodi/XBMCSettingsContentObserver.java \ tools/android/packaging/xbmc/src/org/xbmc/kodi/XBMCOnAudioFocusChangeListener.java \ diff --git a/tools/android/packaging/xbmc/src/org/xbmc/kodi/Main.java.in b/tools/android/packaging/xbmc/src/org/xbmc/kodi/Main.java.in index bfa7c14419..b78b7bfd15 100644 --- a/tools/android/packaging/xbmc/src/org/xbmc/kodi/Main.java.in +++ b/tools/android/packaging/xbmc/src/org/xbmc/kodi/Main.java.in @@ -3,6 +3,7 @@ package org.xbmc.@APP_NAME_LC@; import android.app.NativeActivity; import android.content.ComponentName; import android.content.Intent; +import android.hardware.input.InputManager; import android.media.AudioManager; import android.os.Bundle; import android.util.Log; @@ -19,6 +20,7 @@ public class Main extends NativeActivity private static final String TAG = "@APP_NAME_LC@"; private XBMCSettingsContentObserver mSettingsContentObserver; + private XBMCInputDeviceListener mInputDeviceListener; private XBMCVideoView mVideoView = null; private RelativeLayout mVideoLayout = null; private View thisView = null; @@ -101,6 +103,11 @@ public class Main extends NativeActivity mSettingsContentObserver = new XBMCSettingsContentObserver(this, new Handler()); getApplicationContext().getContentResolver().registerContentObserver(android.provider.Settings.System.CONTENT_URI, true, mSettingsContentObserver ); + // register the InputDeviceListener implementation + mInputDeviceListener = new XBMCInputDeviceListener(); + InputManager manager = (InputManager) getSystemService(INPUT_SERVICE); + manager.registerInputDeviceListener(mInputDeviceListener, new Handler()); + thisView = getWindow().getDecorView(); thisView.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() { @@ -176,6 +183,10 @@ public class Main extends NativeActivity @Override public void onDestroy() { + // unregister the InputDeviceListener implementation + InputManager manager = (InputManager) getSystemService(INPUT_SERVICE); + manager.unregisterInputDeviceListener(mInputDeviceListener); + getApplicationContext().getContentResolver().unregisterContentObserver(mSettingsContentObserver); super.onDestroy(); } diff --git a/tools/android/packaging/xbmc/src/org/xbmc/kodi/XBMCInputDeviceListener.java.in b/tools/android/packaging/xbmc/src/org/xbmc/kodi/XBMCInputDeviceListener.java.in new file mode 100644 index 0000000000..4e044f84a1 --- /dev/null +++ b/tools/android/packaging/xbmc/src/org/xbmc/kodi/XBMCInputDeviceListener.java.in @@ -0,0 +1,29 @@ +package org.xbmc.@APP_NAME_LC@; + +import android.hardware.input.InputManager.InputDeviceListener; +import android.util.Log; + +public class XBMCInputDeviceListener implements InputDeviceListener +{ + native void _onInputDeviceAdded(int deviceId); + native void _onInputDeviceChanged(int deviceId); + native void _onInputDeviceRemoved(int deviceId); + + @Override + public void onInputDeviceAdded(int deviceId) + { + _onInputDeviceAdded(deviceId); + } + + @Override + public void onInputDeviceChanged(int deviceId) + { + _onInputDeviceChanged(deviceId); + } + + @Override + public void onInputDeviceRemoved(int deviceId) + { + _onInputDeviceRemoved(deviceId); + } +} diff --git a/xbmc/platform/android/activity/IInputDeviceCallbacks.h b/xbmc/platform/android/activity/IInputDeviceCallbacks.h new file mode 100644 index 0000000000..c799e103bd --- /dev/null +++ b/xbmc/platform/android/activity/IInputDeviceCallbacks.h @@ -0,0 +1,33 @@ +#pragma once +/* + * Copyright (C) 2016 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +class IInputDeviceCallbacks +{ +public: + virtual ~IInputDeviceCallbacks() { } + + virtual void OnInputDeviceAdded(int deviceId) = 0; + virtual void OnInputDeviceChanged(int deviceId) = 0; + virtual void OnInputDeviceRemoved(int deviceId) = 0; + +protected: + IInputDeviceCallbacks() { } +}; diff --git a/xbmc/platform/android/activity/JNIMainActivity.cpp b/xbmc/platform/android/activity/JNIMainActivity.cpp index 43729272e8..aede2342b5 100644 --- a/xbmc/platform/android/activity/JNIMainActivity.cpp +++ b/xbmc/platform/android/activity/JNIMainActivity.cpp @@ -76,6 +76,33 @@ void CJNIMainActivity::_onAudioFocusChange(JNIEnv *env, jobject context, jint fo m_appInstance->onAudioFocusChange(focusChange); } +void CJNIMainActivity::_onInputDeviceAdded(JNIEnv *env, jobject context, jint deviceId) +{ + static_cast<void>(env); + static_cast<void>(context); + + if (m_appInstance != nullptr) + m_appInstance->onInputDeviceAdded(deviceId); +} + +void CJNIMainActivity::_onInputDeviceChanged(JNIEnv *env, jobject context, jint deviceId) +{ + static_cast<void>(env); + static_cast<void>(context); + + if (m_appInstance != nullptr) + m_appInstance->onInputDeviceChanged(deviceId); +} + +void CJNIMainActivity::_onInputDeviceRemoved(JNIEnv *env, jobject context, jint deviceId) +{ + static_cast<void>(env); + static_cast<void>(context); + + if (m_appInstance != nullptr) + m_appInstance->onInputDeviceRemoved(deviceId); +} + CJNISurface CJNIMainActivity::getVideoViewSurface() { return call_method<jhobject>(m_context, diff --git a/xbmc/platform/android/activity/JNIMainActivity.h b/xbmc/platform/android/activity/JNIMainActivity.h index a018feff22..80b5678ab5 100644 --- a/xbmc/platform/android/activity/JNIMainActivity.h +++ b/xbmc/platform/android/activity/JNIMainActivity.h @@ -20,9 +20,10 @@ */ #include "platform/android/jni/Activity.h" +#include "platform/android/jni/InputManager.h" #include "platform/android/jni/Surface.h" -class CJNIMainActivity : public CJNIActivity +class CJNIMainActivity : public CJNIActivity, public CJNIInputManagerInputDeviceListener { public: CJNIMainActivity(const ANativeActivity *nativeActivity); @@ -33,6 +34,9 @@ public: static void _onNewIntent(JNIEnv *env, jobject context, jobject intent); static void _onVolumeChanged(JNIEnv *env, jobject context, jint volume); static void _onAudioFocusChange(JNIEnv *env, jobject context, jint focusChange); + static void _onInputDeviceAdded(JNIEnv *env, jobject context, jint deviceId); + static void _onInputDeviceChanged(JNIEnv *env, jobject context, jint deviceId); + static void _onInputDeviceRemoved(JNIEnv *env, jobject context, jint deviceId); static void _callNative(JNIEnv *env, jobject context, jlong funcAddr, jlong variantAddr); static void runNativeOnUiThread(void (*callback)(CVariant *), CVariant *variant); diff --git a/xbmc/platform/android/activity/XBMCApp.cpp b/xbmc/platform/android/activity/XBMCApp.cpp index 632d81e61d..e6eb95cb31 100644 --- a/xbmc/platform/android/activity/XBMCApp.cpp +++ b/xbmc/platform/android/activity/XBMCApp.cpp @@ -50,6 +50,7 @@ #include "platform/XbmcContext.h" #include <android/bitmap.h> #include "cores/AudioEngine/AEFactory.h" +#include "platform/android/activity/IInputDeviceCallbacks.h" #include "platform/android/jni/JNIThreading.h" #include "platform/android/jni/BroadcastReceiver.h" #include "platform/android/jni/Intent.h" @@ -100,6 +101,7 @@ ANativeWindow* CXBMCApp::m_window = NULL; int CXBMCApp::m_batteryLevel = 0; bool CXBMCApp::m_hasFocus = false; bool CXBMCApp::m_headsetPlugged = false; +IInputDeviceCallbacks* CXBMCApp::m_inputDeviceCallbacks = nullptr; CCriticalSection CXBMCApp::m_applicationsMutex; std::vector<androidPackage> CXBMCApp::m_applications; @@ -145,6 +147,7 @@ void CXBMCApp::onStart() android_printf("%s: Already running, ignoring request to start", __PRETTY_FUNCTION__); return; } + pthread_attr_t attr; pthread_attr_init(&attr); pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE); @@ -532,6 +535,18 @@ void CXBMCApp::OnPlayBackEnded() ReleaseAudioFocus(); } +const CJNIViewInputDevice CXBMCApp::GetInputDevice(int deviceId) +{ + CJNIInputManager inputManager(getSystemService("input")); + return inputManager.getInputDevice(deviceId); +} + +std::vector<int> CXBMCApp::GetInputDeviceIds() +{ + CJNIInputManager inputManager(getSystemService("input")); + return inputManager.getInputDeviceIds(); +} + std::vector<androidPackage> CXBMCApp::GetApplications() { CSingleLock lock(m_applicationsMutex); @@ -896,3 +911,40 @@ const ANativeWindow** CXBMCApp::GetNativeWindow(int timeout) m_windowCreated.WaitMSec(timeout); return (const ANativeWindow**)&m_window; } + +void CXBMCApp::RegisterInputDeviceCallbacks(IInputDeviceCallbacks* handler) +{ + if (handler == nullptr) + return; + + m_inputDeviceCallbacks = handler; +} + +void CXBMCApp::UnregisterInputDeviceCallbacks() +{ + m_inputDeviceCallbacks = nullptr; +} + +void CXBMCApp::onInputDeviceAdded(int deviceId) +{ + CXBMCApp::android_printf("Input device added: %d", deviceId); + + if (m_inputDeviceCallbacks != nullptr) + m_inputDeviceCallbacks->OnInputDeviceAdded(deviceId); +} + +void CXBMCApp::onInputDeviceChanged(int deviceId) +{ + CXBMCApp::android_printf("Input device changed: %d", deviceId); + + if (m_inputDeviceCallbacks != nullptr) + m_inputDeviceCallbacks->OnInputDeviceChanged(deviceId); +} + +void CXBMCApp::onInputDeviceRemoved(int deviceId) +{ + CXBMCApp::android_printf("Input device removed: %d", deviceId); + + if (m_inputDeviceCallbacks != nullptr) + m_inputDeviceCallbacks->OnInputDeviceRemoved(deviceId); +} diff --git a/xbmc/platform/android/activity/XBMCApp.h b/xbmc/platform/android/activity/XBMCApp.h index 4266369856..fc845e28c1 100644 --- a/xbmc/platform/android/activity/XBMCApp.h +++ b/xbmc/platform/android/activity/XBMCApp.h @@ -33,6 +33,7 @@ #include "platform/android/jni/Activity.h" #include "platform/android/jni/BroadcastReceiver.h" #include "platform/android/jni/AudioManager.h" +#include "platform/android/jni/View.h" #include "threads/Event.h" #include "JNIMainActivity.h" @@ -41,6 +42,7 @@ class CJNIWakeLock; class CAESinkAUDIOTRACK; class CVariant; +class IInputDeviceCallbacks; typedef struct _JNIEnv JNIEnv; struct androidIcon @@ -57,7 +59,9 @@ struct androidPackage int icon; }; -class CXBMCApp : public IActivityHandler, public CJNIMainActivity, public CJNIBroadcastReceiver, public CJNIAudioManagerAudioFocusChangeListener +class CXBMCApp : public IActivityHandler, public CJNIMainActivity, + public CJNIBroadcastReceiver, + public CJNIAudioManagerAudioFocusChangeListener { public: CXBMCApp(ANativeActivity *nativeActivity); @@ -67,6 +71,11 @@ public: virtual void onVolumeChanged(int volume); virtual void onAudioFocusChange(int focusChange); + // implementation of CJNIInputManagerInputDeviceListener + void onInputDeviceAdded(int deviceId) override; + void onInputDeviceChanged(int deviceId) override; + void onInputDeviceRemoved(int deviceId) override; + bool isValid() { return m_activity != NULL; } void onStart(); @@ -120,6 +129,12 @@ public: static void OnPlayBackStopped(); static void OnPlayBackEnded(); + // input device methods + static void RegisterInputDeviceCallbacks(IInputDeviceCallbacks* handler); + static void UnregisterInputDeviceCallbacks(); + static const CJNIViewInputDevice GetInputDevice(int deviceId); + static std::vector<int> GetInputDeviceIds(); + static CXBMCApp* get() { return m_xbmcappinstance; } protected: @@ -143,6 +158,7 @@ private: static int m_batteryLevel; static bool m_hasFocus; static bool m_headsetPlugged; + static IInputDeviceCallbacks* m_inputDeviceCallbacks; bool m_firstrun; bool m_exiting; pthread_t m_thread; diff --git a/xbmc/platform/android/activity/android_main.cpp b/xbmc/platform/android/activity/android_main.cpp index efafe37fe6..98dc377282 100644 --- a/xbmc/platform/android/activity/android_main.cpp +++ b/xbmc/platform/android/activity/android_main.cpp @@ -93,6 +93,7 @@ extern "C" JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved) std::string frameListener = "org/xbmc/" + appName + "/XBMCOnFrameAvailableListener"; std::string settingsObserver = "org/xbmc/" + appName + "/XBMCSettingsContentObserver"; std::string audioFocusChangeListener = "org/xbmc/" + appName + "/XBMCOnAudioFocusChangeListener"; + std::string inputDeviceListener = "org/xbmc/" + appName + "/XBMCInputDeviceListener"; jclass cMain = env->FindClass(mainClass.c_str()); if(cMain) @@ -156,5 +157,16 @@ extern "C" JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved) env->RegisterNatives(cAudioFocusChangeListener, &mOnAudioFocusChange, 1); } + jclass cInputDeviceListener = env->FindClass(inputDeviceListener.c_str()); + if(cInputDeviceListener) + { + JNINativeMethod mInputDeviceCallbacks[3] = { + { "_onInputDeviceAdded", "(I)V", (void*)&CJNIMainActivity::_onInputDeviceAdded }, + { "_onInputDeviceChanged", "(I)V", (void*)&CJNIMainActivity::_onInputDeviceChanged }, + { "_onInputDeviceRemoved", "(I)V", (void*)&CJNIMainActivity::_onInputDeviceRemoved } + }; + env->RegisterNatives(cInputDeviceListener, mInputDeviceCallbacks, 3); + } + return version; } diff --git a/xbmc/platform/android/jni/InputManager.cpp b/xbmc/platform/android/jni/InputManager.cpp new file mode 100644 index 0000000000..8726f35813 --- /dev/null +++ b/xbmc/platform/android/jni/InputManager.cpp @@ -0,0 +1,92 @@ +/* + * Copyright (C) 2013 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#include <algorithm> + +#include "InputManager.h" +#include "ClassLoader.h" +#include "Context.h" +#include "platform/android/activity/JNIMainActivity.h" + +#include "jutils/jutils-details.hpp" + +using namespace jni; + +/************************************************************************/ +/************************************************************************/ +CJNIInputManagerInputDeviceListener* CJNIInputManagerInputDeviceListener::m_listenerInstance = nullptr; + +CJNIInputManagerInputDeviceListener::CJNIInputManagerInputDeviceListener() + : CJNIBase(CJNIContext::getPackageName() + ".XBMCInputDeviceListener") +{ + CJNIMainActivity *appInstance = CJNIMainActivity::GetAppInstance(); + if (!appInstance) + return; + + // Convert "the/class/name" to "the.class.name" as loadClass() expects it. + std::string dotClassName = GetClassName(); + std::replace(dotClassName.begin(), dotClassName.end(), '/', '.'); + m_object = new_object(appInstance->getClassLoader().loadClass(dotClassName)); + m_object.setGlobal(); + + m_listenerInstance = this; +} + +void CJNIInputManagerInputDeviceListener::_onInputDeviceAdded(JNIEnv *env, jobject context, jint deviceId) +{ + static_cast<void>(env); + static_cast<void>(context); + + if (m_listenerInstance != nullptr) + m_listenerInstance->onInputDeviceAdded(deviceId); +} + +void CJNIInputManagerInputDeviceListener::_onInputDeviceChanged(JNIEnv *env, jobject context, jint deviceId) +{ + static_cast<void>(env); + static_cast<void>(context); + + if (m_listenerInstance != nullptr) + m_listenerInstance->onInputDeviceChanged(deviceId); +} + +void CJNIInputManagerInputDeviceListener::_onInputDeviceRemoved(JNIEnv *env, jobject context, jint deviceId) +{ + static_cast<void>(env); + static_cast<void>(context); + + if (m_listenerInstance != nullptr) + m_listenerInstance->onInputDeviceRemoved(deviceId); +} + +/************************************************************************/ +/************************************************************************/ +const CJNIViewInputDevice CJNIInputManager::getInputDevice(int id) const +{ + return call_method<jhobject>(m_object, + "getInputDevice", "(I)Landroid/view/InputDevice;", + id); +} + +std::vector<int> CJNIInputManager::getInputDeviceIds() const +{ + return jcast<std::vector<int>>(call_method<jhintArray>(m_object, + "getInputDeviceIds", "()[I")); +} diff --git a/xbmc/platform/android/jni/InputManager.h b/xbmc/platform/android/jni/InputManager.h new file mode 100644 index 0000000000..5ac9630bb6 --- /dev/null +++ b/xbmc/platform/android/jni/InputManager.h @@ -0,0 +1,57 @@ +#pragma once +/* + * Copyright (C) 2016 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#include "JNIBase.h" +#include "View.h" + +class CJNIInputManagerInputDeviceListener : public CJNIBase +{ +public: + CJNIInputManagerInputDeviceListener(const jni::jhobject &object) : CJNIBase(object) {}; + ~CJNIInputManagerInputDeviceListener() {}; + + static void _onInputDeviceAdded(JNIEnv *env, jobject context, jint deviceId); + static void _onInputDeviceChanged(JNIEnv *env, jobject context, jint deviceId); + static void _onInputDeviceRemoved(JNIEnv *env, jobject context, jint deviceId); + +protected: + CJNIInputManagerInputDeviceListener(); + + virtual void onInputDeviceAdded(int deviceId) = 0; + virtual void onInputDeviceChanged(int deviceId) = 0; + virtual void onInputDeviceRemoved(int deviceId) = 0; + +private: + static CJNIInputManagerInputDeviceListener *m_listenerInstance; +}; + +class CJNIInputManager : public CJNIBase +{ +public: + CJNIInputManager(const jni::jhobject &object) : CJNIBase(object) {}; + ~CJNIInputManager() {}; + + const CJNIViewInputDevice getInputDevice(int id) const; + std::vector<int> getInputDeviceIds() const; + +private: + CJNIInputManager(); +}; diff --git a/xbmc/platform/android/jni/Makefile.in b/xbmc/platform/android/jni/Makefile.in index 88b36315c7..1a95acea14 100644 --- a/xbmc/platform/android/jni/Makefile.in +++ b/xbmc/platform/android/jni/Makefile.in @@ -58,6 +58,7 @@ SRCS += Resources.cpp SRCS += PackageItemInfo.cpp SRCS += DisplayMetrics.cpp SRCS += KeyEvent.cpp +SRCS += InputManager.cpp SRCS += Os.cpp LIB = jni.a diff --git a/xbmc/platform/android/jni/View.cpp b/xbmc/platform/android/jni/View.cpp index 4fd17e59b3..cfbe9d8446 100644 --- a/xbmc/platform/android/jni/View.cpp +++ b/xbmc/platform/android/jni/View.cpp @@ -137,7 +137,7 @@ int CJNIViewInputDevice::getVendorId() const "getVendorId", "()I"); } -CJNIOsVibrator CJNIViewInputDevice::getVibrator() const +const CJNIOsVibrator CJNIViewInputDevice::getVibrator() const { return call_method<jhobject>(m_object, "getVibrator", "()Landroid/os/Vibrator;"); diff --git a/xbmc/platform/android/jni/View.h b/xbmc/platform/android/jni/View.h index 515cf96602..0805ac842b 100644 --- a/xbmc/platform/android/jni/View.h +++ b/xbmc/platform/android/jni/View.h @@ -63,7 +63,7 @@ public: int getProductId() const; int getSources() const; int getVendorId() const; - CJNIOsVibrator getVibrator() const; + const CJNIOsVibrator getVibrator() const; bool hasMicrophone() const; bool isVirtual() const; bool supportsSource(int source) const; |