Navigation Menu

Skip to content

Commit

Permalink
intents: add the very beginnings of an intents class
Browse files Browse the repository at this point in the history
Implemented as a singleton, this will eventually have functions for setting up
receivers, callbacks, etc. Also, our broadcasting can move into here, to clean
up some of the mess in XBMCApp.
  • Loading branch information
Cory Fields committed Mar 1, 2013
1 parent d76fff5 commit 7672948
Show file tree
Hide file tree
Showing 4 changed files with 92 additions and 0 deletions.
55 changes: 55 additions & 0 deletions xbmc/android/activity/Intents.cpp
@@ -0,0 +1,55 @@
/*
* Copyright (C) 2013 Team XBMC
* http://www.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 "Intents.h"
#include "utils/log.h"
#include "XBMCApp.h"

CAndroidIntents::CAndroidIntents()
{
}

void CAndroidIntents::ReceiveIntent(JNIEnv *env, const jobject &intent)
{
std::string action = GetIntentAction(intent);
CLog::Log(LOGDEBUG,"CAndroidIntents::ReceiveIntent: %s", action.c_str());
}

std::string CAndroidIntents::GetIntentAction(const jobject &intent)
{
std::string action;
JNIEnv *env;

if (!intent)
return "";

CXBMCApp::AttachCurrentThread(&env, NULL);
jclass cIntent = env->GetObjectClass(intent);

//action = intent.getAction()
jmethodID mgetAction = env->GetMethodID(cIntent, "getAction", "()Ljava/lang/String;");
env->DeleteLocalRef(cIntent);
jstring sAction = (jstring)env->CallObjectMethod(intent, mgetAction);
const char *nativeString = env->GetStringUTFChars(sAction, 0);
action = std::string(nativeString);

env->ReleaseStringUTFChars(sAction, nativeString);
CXBMCApp::DetachCurrentThread();
return action;
}
35 changes: 35 additions & 0 deletions xbmc/android/activity/Intents.h
@@ -0,0 +1,35 @@
#pragma once
/*
* Copyright (C) 2013 Team XBMC
* http://www.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 <string>
#include <jni.h>

class CAndroidIntents
{
public:
void ReceiveIntent(JNIEnv *env, const jobject &intent);
static CAndroidIntents& getInstance() {static CAndroidIntents temp; return temp;};

private:
CAndroidIntents();
CAndroidIntents(CAndroidIntents const&);
void operator=(CAndroidIntents const&);
std::string GetIntentAction(const jobject &intent);
};
1 change: 1 addition & 0 deletions xbmc/android/activity/Makefile.in
Expand Up @@ -17,6 +17,7 @@ SRCS += GraphicBuffer.cpp
SRCS += EventLoop.cpp
SRCS += XBMCApp.cpp
SRCS += JNI.cpp
SRCS += Intents.cpp

OBJS += $(APP_GLUE) $(CPU_OBJ)

Expand Down
1 change: 1 addition & 0 deletions xbmc/android/activity/XBMCApp.h
Expand Up @@ -104,6 +104,7 @@ class CXBMCApp : public IActivityHandler
friend class CAESinkAUDIOTRACK;
friend class CAndroidFeatures;
friend class CFileAndroidApp;
friend class CAndroidIntents;

static int AttachCurrentThread(JNIEnv** p_env, void* thr_args = NULL);
static int DetachCurrentThread();
Expand Down

0 comments on commit 7672948

Please sign in to comment.