小编Pin*_*azz的帖子

Android NDK/JNI - 对自定义头文件中定义的函数的未定义引用

使用JNI,我正在尝试为Android NDK编写一个本机C++方法,该方法调用自定义头文件中定义的C函数.但是,我的C函数调用收到了一个未定义的引用错误.

这是我的C++代码,它调用C函数并将其结果作为jstring返回给Java:

#include <jni.h>

#include "gesture_detector.h"

JNIEXPORT jstring JNICALL Java_com_example_bmtitest_JavaAbstractionLayer_callGestureAnalysis(JNIEnv *env, jobject obj, jfloat previousX, jfloat previousY, jfloat currentX, jfloat currentY) {
    return env->NewStringUTF(gestureAnalysis(previousX, previousY, currentX, currentY));
}
Run Code Online (Sandbox Code Playgroud)

这是我的C函数:

#include <stdio.h>

#include "gesture_detector.h"

//implemented from gesture_detector.h
const char* gestureAnalysis(float previousX, float previousY, float currentX, float currentY)
{
    float xOffset = currentX - previousX;
    float yOffset = currentY - previousY;

    if(xOffset == 0 && yOffset == 0)
    {
        return "TAP";
    }
    return "0";
}
Run Code Online (Sandbox Code Playgroud)

这是我的Android.mk代码:

LOCAL_PATH := $(call my-dir)

include …
Run Code Online (Sandbox Code Playgroud)

c c++ java-native-interface android android-ndk

20
推荐指数
2
解决办法
2万
查看次数

Android相机 - 录制视频时预览会放大

我一直试图解决这个问题,但出于某种原因,当我开始使用相机录制视频时,预览会放大.我从以下示例中获得以下代码:

@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
    Camera.Parameters myParameters = mCamera.getParameters();
    List<Camera.Size> sizes = myParameters.getSupportedPreviewSizes();
    Camera.Size myBestSize = getBestPreviewSize(sizes, width, height);

    if (myBestSize != null) {
        myParameters.setPreviewSize(myBestSize.width, myBestSize.height);
        myParameters.setVideoStabilization(false);
        mCamera.setParameters(myParameters);
        mCamera.startPreview();
        mCamera.unlock();
    }
}

private Camera.Size getBestPreviewSize(List<Camera.Size> sizes, int width, int height) {
    final double ASPECT_TOLERANCE = 0.05;
    double targetRatio = (double) width / height;

    if (sizes == null) return null;

    Camera.Size optimalSize = null;

    double minDiff = Double.MAX_VALUE;

    int targetHeight = height;

    // …
Run Code Online (Sandbox Code Playgroud)

video android surfaceview video-recording android-camera

11
推荐指数
1
解决办法
1032
查看次数

Ant无法在Eclipse Kepler中工作(Java虚拟机启动器 - 发生了Java异常)

我最近升级到Eclipse Kepler,并且遇到了Ant的问题.我正在使用Java虚拟机启动器 - 无论我在构建文件中选择哪个目标,都会发生Java异常错误.

我尝试重新安装我的JDK,但仍然得到错误.我正在运行JDK的7u25版本.我将JAVA_HOME环境变量设置为C:\Progra~1\Java\jdk1.7.0_25,所以我不认为这是问题所在.还有什么可能导致这个问题?

编辑:我也在命令行测试了ant,它运行得很好.这是开普勒的一个错误吗?

编辑2:这是错误的日志:

org.eclipse.core.runtime.CoreException: Could not find one or more classes: "org.apache.tools.ant.BuildLogger". Please check the Ant classpath.
at org.eclipse.ant.core.AntRunner.problemLoadingClass(AntRunner.java:467)
at org.eclipse.ant.core.AntRunner.run(AntRunner.java:380)
at org.eclipse.ant.internal.launching.launchConfigurations.AntLaunchDelegate.runInSameVM(AntLaunchDelegate.java:307)
at org.eclipse.ant.internal.launching.launchConfigurations.AntLaunchDelegate.launch(AntLaunchDelegate.java:260)
at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:858)
at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:707)
at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:700)
at org.eclipse.core.externaltools.internal.model.ExternalToolBuilder.launchBuild(ExternalToolBuilder.java:181)
at org.eclipse.core.externaltools.internal.model.ExternalToolBuilder.doBuildBasedOnScope(ExternalToolBuilder.java:169)
at org.eclipse.core.externaltools.internal.model.ExternalToolBuilder.build(ExternalToolBuilder.java:88)
at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:726)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:239)
at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:292)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:295)
at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:351)
at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:374)
at org.eclipse.core.internal.resources.Workspace.buildInternal(Workspace.java:514)
at org.eclipse.core.internal.resources.Workspace.build(Workspace.java:423)
at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:830)
at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:707)
at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1018)
at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1222)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)

Caused by: java.lang.NoClassDefFoundError: org/apache/tools/ant/BuildLogger
at …
Run Code Online (Sandbox Code Playgroud)

java eclipse ant eclipse-kepler

10
推荐指数
3
解决办法
2万
查看次数

调用invalidate后,Android Custom View显示纯黑色

在这段代码中,我想在两个ImageView的顶部之间画一条线.但是,在运行应用程序时,自定义视图在调用后显示为纯黑色invalidate().

这是我的代码:

public class ArrowView extends RelativeLayout {
    public Paint paint;
    public Bitmap eraser;
    public Canvas cacheCanvas;

    public float leftX;
    public float leftY;

    public float rightX;
    public float rightY;

    public boolean update = false;

    public ImageView iv_leftArrow;
    public ImageView iv_rightArrow;

    private int w;
    private int h;

    LayoutInflater mInflater;

    public ArrowView(Context context) {
        super(context);
        this.setWillNotDraw(false);
        mInflater = LayoutInflater.from(context);
        init();
    }

    public ArrowView(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.setWillNotDraw(false);
        mInflater = LayoutInflater.from(context);
        init();
    }

    public ArrowView(Context context, AttributeSet attrs, …
Run Code Online (Sandbox Code Playgroud)

android android-custom-view android-canvas android-relativelayout

9
推荐指数
1
解决办法
519
查看次数

如何使蓝牙SPP连接过程更可靠?

我们即将发布我们软件的新版本,对于之后的版本,我们的目标是使我们的蓝牙SPP连接的连接过程更加可靠.我们在产品中使用RN42模块,目前有时可能需要多次尝试才能连接到我们的主板.

这是我目前的代码:

class ConnectThread extends Thread {
    BluetoothDevice mDevice;

    public ConnectThread(BluetoothDevice device) throws SecurityException, NoSuchMethodException {
        mDevice = device;
        UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
        try {
            btSocket = mDevice.createInsecureRfcommSocketToServiceRecord(uuid);
        } catch (IOException e) {
            Log.e("Error", "Could not create socket!");
        }
    }

    public void cancel() {
        interrupt();
        try {
            Log.i("Treadmill", "in connect thread cancellation");
            btSocket.close();
        } catch (IOException localIOException) {
            Log.e("Treadmill", "exception + " + localIOException.getMessage());
        }
    }

    public void run() {
        btAdapter.cancelDiscovery();
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            Log.e("whatever", …
Run Code Online (Sandbox Code Playgroud)

android bluetooth rfcomm spp android-bluetooth

8
推荐指数
1
解决办法
1170
查看次数

Google Play Developer Console - 如何在其他国家/地区提供应用程序?

我们已将我们的一个应用程序发布到 Google Play,但是,我们有一位法国用户想要下载我们的应用程序,但它没有出现在 Google Play 中,即使它出现在美国这里。

有谁知道如何在其他国家/地区提供该应用程序?

android google-play google-play-developer-api google-play-console

7
推荐指数
2
解决办法
2519
查看次数

应用程序间通信的最佳方法而又不突出它们?

我一直在努力如何在不展示每个应用程序前景的情况下最好地实现应用程序间通信。我曾考虑过使用BroadcastReceivers在这两个应用程序之间进行通信,但是看来它们必须在清单中进行注册,因此很难将数据带入活动中。一个示例就是一个应用程序会将其状态发送给另一个应用程序,表明它已准备好开始运行会话。但是,我希望在启动会话时将另一个应用程序保留在后台,并让用户根据需要在应用程序之间进行切换。

有谁知道什么是最好的方法?基本上,只要其他应用程序正在运行,我就希望将数据发送到另一个应用程序。

android broadcastreceiver android-intent android-activity

7
推荐指数
1
解决办法
122
查看次数

某些设备上没有显示自定义视图中的ImageView壁纸

我目前有自定义视图的以下XML代码:

<com.pink.jazz.RootView
    android:id="@+id/rootView"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingStart="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingEnd="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MouseActivity" >

    <ImageView
        android:id="@+id/mouse_hole"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@drawable/mouse_hole"
        android:visibility="gone"
    />
</com.pink.jazz.RootView>
Run Code Online (Sandbox Code Playgroud)

在某些设备(例如三星Galaxy Tab 4)上,壁纸图像mouse_hole显示正常,而在其他设备(例如Asus Transformer Infinity TF700T)上根本不显示.的知名度mouse_hole正在变为可见编程当我开始我的比赛.我的自定义视图扩展RelativeLayout.

谁能知道这里有什么问题?

android wallpaper android-custom-view imageview

6
推荐指数
1
解决办法
278
查看次数

Android - 如何在SeekBar上标记时间戳

我将开发一个记录按钮按下的应用程序,在那里我可以在SeekBar上回放该会话.每个事件都将从计时器的值加上时间戳.播放时,在每个录制的事件中,我都会播放声音.那部分应该不是问题.

现在,我想弄清楚的是我如何通过在每个事件发生的位置绘制红条来标记SeekBar上的时间戳.我希望在播放之前绘制红色条.

由于我还没有启动此应用程序,我目前没有任何代码.

events android drawing timestamp seekbar

5
推荐指数
1
解决办法
606
查看次数

JavaScript帮助 - JQuery未定义

我试图在我的页面中使用DataTables,出于某种原因,我在浏览器中查看错误时收到"JQuery is undefined"错误.这是我的HTML代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<script type="text/javascript" charset="utf-8" src="/CensusDatabase/js/jquery.dataTables-1.9.4.min.js" ></script>
<script type="text/javascript" src="/CensusDatabase/js/DrawTable.js" ></script>

<head>
    <title>My Census Data</title>
    <style type="text/css">
        body {
            color: black;
            background-color: #ffaacc;
            font-family: "Trebuchet MS", "Calibri", sans-serif 
        }
        h1 {
            font-family: "Trebuchet MS", "Calibri", sans-serif
        }

   </style>

</head>

<body>

    <h1>My Census Data</h1>

    <div class="census">

        <div id="block-system-main">
            <h2>Reports</h2>
                <ul>
                    <li><a href="#" onclick="nationalAgeGender()">National age and gender data</a></li>
                    <li><a href="#" onclick="arizonaAgeGender()">Arizona age and gender data</a></li>
                    <li><a href="#" onclick="combinedAgeGender()">Combined age and gender data</a></li>
                    <li><a href="#" onclick="nationalRace()">National …
Run Code Online (Sandbox Code Playgroud)

javascript jquery undefined

0
推荐指数
1
解决办法
124
查看次数