从frameworks的Java层调用JNI的方法

本文详细介绍了如何从Android frameworks的Java层调用JNI方法,包括在Java类中添加native方法、创建对应的JNIcpp文件、编写JNINativeMethod、注册JNI方法以及在Android.mk中设置编译源文件的步骤。
摘要由CSDN通过智能技术生成

在上一篇从应用层通过aidl调用到frameworks中添加的服务的方法中介绍了从应用层通过aidl调用到frameworks层的方法,这里则接着上篇文章,介绍从frameworks层调研JNI的方法!

1、继上篇文章,在jb4.4-kikat\frameworks\base\services\java\com\android\server目录下的MemdevService.java中,添加native方法

package com.android.server;

import android.content.Context;
import android.os.IMemdevService;
import android.util.Slog;

public class MemdevService extends IMemdevService.Stub {
	private static final String TAG = "MemdevService";
	private int memDate = 0;
	private int mPtr = 0;
	
	MemdevService()
	{
		Slog.i(TAG, "Javen.tang start MemdevService");
		mPtr = init_native();
		if(mPtr == 0)
		{
			Slog.i(TAG, "MemdevService init_native fail");
		}
	}
	
	public void setVal(int val)
	{
		memDate = val;
		Slog.i(TAG, "MemdevService setVal memDate="+memDate);
		setVal_native(val);
	}
	
	public int getVal()
	{
		memDate = getVal_native();
		Slog.i(TAG, "MemdevService getVal val="+memDate+"init_native="+mPtr);
		return memDate;
	}

	private static native int init_native();
	private static native void setVal_native(int val);
	private static native int getVal_native();
}

2、根据MemdevService.java的路径,在jb4.4-kikat\frameworks\base\services\jni目录下创建com_android_server_MemdevService.cpp文件

/*
 * Copyright (C) 2009 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See t
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值