gpt4 book ai didi

android - 将加速度计发送到 C/C++

转载 作者:行者123 更新时间:2023-11-29 02:12:43 28 4
gpt4 key购买 nike

我的 templateApp.java 中有以下代码:

    package com.android.templateApp;

import android.app.Activity;
import android.os.Bundle;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;

public class templateApp extends Activity implements SensorEventListener
{
GL2View mView;

SensorManager mSensorManager;

@Override protected void onCreate(Bundle icicle)
{
super.onCreate( icicle );

mSensorManager = ( SensorManager ) getSystemService( SENSOR_SERVICE );

mView = new GL2View( getApplication() );

mSensorManager.registerListener( this,
mSensorManager.getDefaultSensor( SensorManager.SENSOR_ACCELEROMETER ),
SensorManager.SENSOR_DELAY_GAME );

setContentView( mView );
}

@Override protected void onResume()
{
super.onResume();

mView.onResume();
}


public static native void Accelerometer( float x, float y, float z );

public void onSensorChanged( SensorEvent event )
{
float x = event.values[ SensorManager.DATA_X ],
y = event.values[ SensorManager.DATA_Y ],
z = event.values[ SensorManager.DATA_Z ];

// ALWAYS CRASH HERE!!!!
Accelerometer( x, y, z );
}

public void onAccuracyChanged( Sensor sensor, int arg1 ) {}
}

在我的 templateApp.cpp 中,我得到以下内容来桥接加速度计功能:

    extern "C"
{
JNIEXPORT void JNICALL Java_com_android_templateApp_GL2View_Init( JNIEnv *env, jobject obj, jint width, jint height );


JNIEXPORT void JNICALL Java_com_android_templateApp_templateApp_Accelerometer( JNIEnv *env, jfloat x, jfloat y, jfloat z );
};

JNIEXPORT void JNICALL Java_com_android_templateApp_GL2View_Init( JNIEnv *env, jobject obj, jint width, jint height )
{ Init( width, height); }

JNIEXPORT void JNICALL Java_com_android_templateApp_templateApp_Accelerometer( JNIEnv *env, jfloat x, jfloat y, jfloat z )
{ Accelerometer( x, y,z ); }

当我在 eclipse 中将鼠标移到上方时,它显示调用属于com.android.templateApp.templateApp.Accelerometer,这正是我所声明的,但是它总是崩溃并报告 UnsatisfiedLinkError。

我尝试了每一种组合(假设我的 native 定义是错误的),但它在 Java 代码中的加速度计调用中不断崩溃......奇怪的是,我的 GL2View.java 中的 init 函数工作完美。有什么东西阻止我从扩展 Activity 的主文件调用 native API 吗?由于传感器正常工作,我打印了崩溃的 native 调用的值,但我不知道为什么。

提前致谢!

最佳答案

您是否启动了您的 native 代码?这是我的,它位于公开了 native 方法的类中。

static {
Log.v("NativeCodeWrapper.java", "Loading native libraries");
System.loadLibrary("NameOfNativeModuleAsDefinedInAndroidDotMk");
}

关于android - 将加速度计发送到 C/C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6303707/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com