cocos2d-x 안드로이드 웹페이지 호출
cocos2d-x loading a wep page in Android
1. JNI 등록할 UrlJni.h , UrlJni.cpp 클래스파일 작성
ð 2개 파일들을
(사용자폴더이름)\cocos2dx\platform\android\jni 폴더에 저장
======
UrlJni.h
======
#ifndef __ANDROID_URL_JNI_H__
#define __ANDROID_URL_JNI_H__
extern "C"
{
extern void openURLJNI(const char* url);
}
#endif
========
UrlJni.cpp
========
#include "UrlJni.h"
#include "JniHelper.h"
#include <jni.h>
using namespace cocos2d;
extern "C"
{
void openURLJNI(const char* url)
{
JniMethodInfo t;
if (JniHelper::getStaticMethodInfo(t, "org/cocos2dx/lib/Cocos2dxActivity"
,"openURL"
,"(Ljava/lang/String;)V"))
{
jstring StringArg1 = t.env->NewStringUTF(url);
t.env->CallStaticVoidMethod(t.classID,t.methodID, StringArg1);
}
}
}
2. (사용자폴더이름)\cocos2dx\Android.mk 에 등록
è 아래 빨간색 코드 한줄
========
Android.mk
========
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := cocos2dx_static
LOCAL_MODULE_FILENAME := libcocos2d
LOCAL_SRC_FILES := \
CCConfiguration.cpp \
CCDrawingPrimitives.cpp \
CCScheduler.cpp \
CCCamera.cpp \
actions/CCAction.cpp \
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
platform/android/jni/JniHelper.cpp \
platform/android/jni/IMEJni.cpp \
platform/android/jni/MessageJni.cpp \
platform/android/jni/SensorJni.cpp \
platform/android/jni/SystemInfoJni.cpp \
platform/android/jni/TouchesJni.cpp \
platform/android/jni/UrlJni.cpp \
script_support/CCScriptSupport.cpp \
sprite_nodes/CCAnimation.cpp \
sprite_nodes/CCAnimationCache.cpp \
sprite_nodes/CCSprite.cpp \
. . . . . . . . . . . . .
. . . . . . . . . . . . .
3. Cocos2dxActivity.java 에 멤버변수와 메서드를 추가한다.
(사용자프로젝트이름)\ android\src\org\cocos2dx\lib 폴더에 있음
ð 아래 코드 빨간색 코드
================
Cocos2dxActivity.java
================
package org.cocos2dx.lib;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.DisplayMetrics;
import android.util.Log;
public class Cocos2dxActivity extends Activity{
private static Cocos2dxMusic backgroundMusicPlayer;
private static Cocos2dxSound soundPlayer;
private static Cocos2dxAccelerometer accelerometer;
private static boolean accelerometerEnabled = false;
private static Handler handler;
private final static int HANDLER_SHOW_DIALOG = 1;
private static String packageName;
private static native void nativeSetPaths(String apkPath);
//===============
//add url member
//===============
private static Activity meUrl = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//===============
//add url member
//===============
meUrl = this;
// get frame size
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
accelerometer = new Cocos2dxAccelerometer(this);
// init media player and sound player
backgroundMusicPlayer = new Cocos2dxMusic(this);
soundPlayer = new Cocos2dxSound(this);
// init bitmap context
Cocos2dxBitmap.setContext(this);
handler = new Handler(){
public void handleMessage(Message msg){
switch(msg.what){
case HANDLER_SHOW_DIALOG:
showDialog(((DialogMessage)msg.obj).title, ((DialogMessage)msg.obj).message);
break;
}
}
};
}
//===============
//add url method
//===============
public static void openURL(String url){
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
meUrl.startActivity(i);
}
//===============
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
4. 사용하고자 하는 해당 클래스에서 코딩
//헤더파일 인클루드 코드
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#include "platform/android/jni/UrlJni.h"
#endif
//호출 코드 예
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
openURLJNI("http://bbaddoroid.tistory.com");
#endif
끝.
'Android' 카테고리의 다른 글
SoundPoool - maxStreams 설정 (0) | 2014.01.08 |
---|---|
cocos2d-x 안드로이드 진동기능 설정 cocos2d-x android vibration definition (0) | 2013.11.08 |
cocos2d-x 1.01 ripple, wave, liquid 응용 (0) | 2013.07.12 |
Bresenham 브레센함 알고리듬 : 원 그리기 (0) | 2013.03.07 |
Conway's Game Of Life Java code (0) | 2012.10.05 |