小编giv*_*ivi的帖子

Android NDK:获得回溯

我正在开发通过NDK与Android一起使用的本机应用程序.我需要在backtrace()发生崩溃时调用该函数.问题是<execinfo.h>NDK 没有 .

有没有其他方法来获得回溯?

c c++ android android-ndk

44
推荐指数
6
解决办法
4万
查看次数

尝试从YouTube读取视频流时获取工件

我正在尝试从YouTube获取的RTSP流中读取视频帧.这是我的测试视频的链接:

RTSP://v8.cache5.c.youtube.com/CiILENy73wIaGQkJlrXMiAG8BxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp

如果我正在从本地文件中读取帧 - 一切都很好,但是当从流中读取它们时,除了大​​量的工件之外什么都没有.我已经google了一下,发现UDP数据包可能存在问题,切换到TCP可能有所帮助,但我真的找不到可以改变它的地方.

这是读取框架的功能:

bool nextFrame(AVFormatContext *pFormatCtx, AVCodecContext *pCodecCtx, int videoStream, AVFrame *pFrame) {  AVPacket packet;
    int frameFinished = 0;

    while( !frameFinished && av_read_frame(pFormatCtx, &packet) >= 0 ) {
        // Is this a packet from the video stream?
        if( packet.stream_index == videoStream ) {
            // Decode video frame
            avcodec_decode_video2(pCodecCtx, pFrame, &frameFinished, &packet);
        }

        // Free the packet that was allocated by av_read_frame
        av_free_packet(&packet);    
       }    
       return frameFinished!=0;  
}
Run Code Online (Sandbox Code Playgroud)

我在日志中也收到了很多错误消息:

[h263 @ 0x7804c00] warning: first frame is no keyframe
[h263 …
Run Code Online (Sandbox Code Playgroud)

youtube iphone ffmpeg gdata-api rtsp

13
推荐指数
1
解决办法
1621
查看次数

将iAD整合到3D游戏中

我正在开发第一人称射击游戏并希望整合iAD(以后可能是AdMob).问题在于,我所知道的所有广告系统都使用简单的UIView,并且基于点击它们.我想使用真正的3D游戏对象作为触发器,即当你拍摄一些特殊角色时,会调用广告.系统会通知用户(如果您不想要广告,请不要拍摄这些对象).

从技术角度来看,我知道如何做到这一点.但是从广告提供商的角度(以及Apple审核小组POV)这样做是否合法?

ps或者也许有人知道广告系统可以像我那样集成到我的游戏中.

iphone ads appstore-approval ios iad

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

Android.mk条件

有没有办法在Android.mk中使用条件表达式?我需要它像这样做smth:

IF arch = AREABI_V7
   *use path for my arm_v7 static libs*
ELSE
   *use path for arm static libs*
Run Code Online (Sandbox Code Playgroud)

android makefile android-ndk android-make

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

OpenCV未定义的引用

我正在尝试将我的JNI Android应用程序与OpenCV链接,但我收到了这些错误

./obj/local/armeabi
/libopencv_calib3d.a(calibinit.cpp.o): In function `cvDrawChessboardCorners':
calibinit.cpp:(.text+0x20a): undefined reference to `cvLine'
calibinit.cpp:(.text+0x244): undefined reference to `cvLine'
calibinit.cpp:(.text+0x26e): undefined reference to `cvCircle'
calibinit.cpp:(.text+0x2ec): undefined reference to `cvLine'
calibinit.cpp:(.text+0x4ce): undefined reference to `cvLine'
calibinit.cpp:(.text+0x504): undefined reference to `cvLine'
calibinit.cpp:(.text+0x532): undefined reference to `cvCircle'
./obj/local/armeabi/libopencv_calib3d.a(calibinit.cpp.o): In function `cvFindChessboardCorners':
calibinit.cpp:(.text+0x1b6a): undefined reference to `cvRectangle'
./obj/local/armeabi/libopencv_calib3d.a(calibinit.cpp.o): In function `cv::findCirclesGrid(cv::_InputArray const&, cv::Size_<int>, cv::_OutputArray const&, int, cv::Ptr<cv::FeatureDetector> const&)':
calibinit.cpp:(.text+0x5058): undefined reference to `cv::FeatureDetector::detect(cv::Mat const&, std::vector<cv::KeyPoint, std::allocator<cv::KeyPoint> >&, cv::Mat const&) const'
./obj/local/armeabi/libopencv_calib3d.a(circlesgrid.cpp.o): In function `cv::findCirclesGridDefault(cv::_InputArray const&, cv::Size_<int>, …
Run Code Online (Sandbox Code Playgroud)

c c++ android opencv android-ndk

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

生成 Android.mk 的工具

我有一个很大的 C++ 项目,它有大约一百个源文件,它们位于一堆子文件夹中。它们最初是使用 Xcode IDE 开发的,因此那里没有 makefile。

现在我需要使用 NDK 为 Android 构建它。我了解如何创建 Android.mk,但我想知道是否有任何可视化工具或脚本可以自动执行此操作(或至少是基本结构)(可能像 cmake 一样),或者我是否必须手动完成所有操作(我会花很多时间在这...)?

android makefile android-ndk

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

C++ multimap迭代器失效

我试图弄清楚std::multimap迭代器是如何工作的,因此我创建了一个简单的例子来说明问题的实质.如果取消注释案例1,我希望迭代器指向带有键1的第一个元素,但实际上它会打印与键0相关的所有值(就像没有被擦除一样),有时它会崩溃,可能是因为迭代器无效.但是,如果取消注释案例2,则会正确删除键1的所有值.

有没有办法知道什么是multimap后擦除的下一个有效迭代器?(例如std::vector.erase(...)返回一个)

std::multimap<int, int> m;

for(int j=0; j<3; ++j) {
    for(int i=0; i<5; ++i) {
        m.insert(std::make_pair(j, i));
    }
}

for(std::multimap<int, int>::iterator it=m.begin(); it!=m.end();) {
    printf("%d %d\n", (*it).first, (*it).second);
    ++it;
    if( (*it).second == 3 ) {
        //m.erase(0);     //case 1
        m.erase(1);     //case 2
    }
}
Run Code Online (Sandbox Code Playgroud)

c++ iterator stl multimap

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

为什么我的Android背景颜色不可见?

我想弄清楚一件简单的事情:如何在Android视图中设置背景颜色.以下是活动中的代码:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    View v = new  View(this);

    setContentView(v);
    v.setBackgroundColor(23423425);
}
Run Code Online (Sandbox Code Playgroud)

而我得到的只是黑屏.

android android-view

4
推荐指数
1
解决办法
1万
查看次数

Qt 编译器标记顺序

我的目标是摆脱某些类型的编译器警告。我发现我可以通过在我的 .pro 文件中添加编译器标志来做到这一点:

QMAKE_CXXFLAGS += -Wno-unused-variable -Wno-reorder
Run Code Online (Sandbox Code Playgroud)

问题是它们是在 Qt 构建系统生成的标志之前添加的。我检查了我的编译器输出:

g++-4.2 -c -pipe -Wno-unused-variable -Wno-reorder -g -gdwarf-2 -arch x86_64 -Xarch_x86_64 -mmacosx-version-min=10.5 -Wall -W -DQT_OPENGL_LIB -DQT_GUI_LIB -DLIBT_C

所以正如你所看到的-Wall 跟踪我的标志并丢弃它们。我应该怎么做才能在之后添加这些标志?

c++ qt gcc compilation clang

4
推荐指数
1
解决办法
1041
查看次数

从r6更新到r7后,Android NDK找不到JNI_GetCreatedJavaVMs

我已将NDK版本从r6更新为r7。之后,在编译本机文件之一时出现此错误:

错误:未在此范围内声明“ JNI_GetCreatedJavaVMs”

我正在为API级别8(Android 2.2)构建项目。我已经检查了

(MY_NDK_PATH_R6)/android-8/arch-arm/usr/include/jni.h

GetCreatedJavaVMs声明和文件jni.h实际上是一个符号链接

(MY_NDK_PATH_R6)/platforms/android-3/arch-arm/usr/include/jni.h

然后我检查了

(MY_NDK_PATH_R7)/平台/android-8/arch-arm/usr/include/jni.h

它实际上是一个文件,而不是符号链接。

我正在使用Eclipse构建项目,而我在首选项中唯一指定的内容是的路径ndk-build

编辑:好的,现在很清楚为什么找不到GetCreatedJavaVMs:

/*
 * VM initialization functions.
 *
 * Note these are the only symbols exported for JNI by the VM.
 */
#if 0  /* In practice, these are not exported by the NDK so don't declare them */
jint JNI_GetDefaultJavaVMInitArgs(void*);
jint JNI_CreateJavaVM(JavaVM**, JNIEnv**, void*);
jint JNI_GetCreatedJavaVMs(JavaVM**, jsize, jsize*);
#endif
Run Code Online (Sandbox Code Playgroud)

但是在这种情况下我应该如何获得VM?

java java-native-interface android android-ndk

3
推荐指数
1
解决办法
2760
查看次数