有人能告诉我intJava String.hashCode()方法可以返回的最大值和最小值是多少?
是否可以防止用户关闭软键盘。换句话说,当我的活动可见时,键盘在屏幕上(始终)可用。这可能吗?如果是这样,你将如何实现它?
我正在尝试使用FFmpeg,JNI和Java FileDescriptor在Android中检索元数据,但它并没有"正常工作".我知道FFmpeg支持管道协议,所以我试图以cat test.mp3 | ffmpeg i pipe:0编程方式进行搜索:" ".我使用以下代码从与Android应用程序捆绑在一起的资产中获取FileDescriptor:
FileDescriptor fd = getContext().getAssets().openFd("test.mp3").getFileDescriptor();
setDataSource(fd, 0, 0x7ffffffffffffffL); // native function, shown below
Run Code Online (Sandbox Code Playgroud)
然后,在我的本机(In C++)代码中,我通过调用以下方式获取FileDescriptor:
static void wseemann_media_FFmpegMediaMetadataRetriever_setDataSource(JNIEnv *env, jobject thiz, jobject fileDescriptor, jlong offset, jlong length)
{
//...
int fd = jniGetFDFromFileDescriptor(env, fileDescriptor); // function contents show below
//...
}
// function contents
static int jniGetFDFromFileDescriptor(JNIEnv * env, jobject fileDescriptor) {
jint fd = -1;
jclass fdClass = env->FindClass("java/io/FileDescriptor");
if (fdClass != NULL) {
jfieldID fdClassDescriptorFieldID = …Run Code Online (Sandbox Code Playgroud) 我已经定义了以下头文件(在C中),省略了函数实现,因为不需要:
#ifndef FFMPEG_MEDIAMETADATARETRIEVER_H_
#define FFMPEG_MEDIAMETADATARETRIEVER_H_
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libavutil/dict.h>
int setDataSource(AVFormatContext** pFormatCtx, const char* path);
#endif /*FFMPEG_MEDIAMETADATARETRIEVER_H_*/
Run Code Online (Sandbox Code Playgroud)
在C++中,我定义了第二个头文件:
#ifndef MEDIAMETADATARETRIEVER_H
#define MEDIAMETADATARETRIEVER_H
using namespace std;
extern "C" {
#include "ffmpeg_mediametadataretriever.h"
}
class MediaMetadataRetriever
{
public:
MediaMetadataRetriever();
~MediaMetadataRetriever();
int setDataSource(const char* dataSourceUrl);
};
#endif // MEDIAMETADATARETRIEVER_H
Run Code Online (Sandbox Code Playgroud)
在,mediametadataretriever.cpp中我定义了以下函数:
int MediaMetadataRetriever::setDataSource(
const char *srcUrl)
{
// should call C function
AVFormatContext* pFormatCtx;
return setDataSource(&pFormatCtx, srcUrl);
}
Run Code Online (Sandbox Code Playgroud)
当我尝试在Eclipse中编译这个(C++)项目时,我得到一个"No matching function call ..."错误,该错误与:
return setDataSource(&pFormatCtx, srcUrl);
Run Code Online (Sandbox Code Playgroud)
如果我注释掉了这个电话,代码编译得很好:
int MediaMetadataRetriever::setDataSource(
const char *srcUrl)
{ …Run Code Online (Sandbox Code Playgroud) 是否可以检查命令是否作为ant任务的一部分存在.例如,我想确保"yasm"命令作为ant任务的一部分存在.这可能吗?如果是这样,你能提供一个例子吗?
Android中是否有意图在重大时间变化(如新的一天)上广播.我正在寻找类似于iOS中广播的重要时间变化通知的内容.我正在尝试安排在每天开始时进行处理.我知道这可能与AlarmManager有关但我想避免安排我自己的警报,如果有另一种方式.
我的Android应用程序检索SHOUTcast元数据并显示它.我正在使用非英语字符集.基本上,元数据显示为乱码.如何执行字符编码检测并正确显示文本?很抱歉,如果这是一个非常重要的问题,我对这个主题并不精通.
有问题的流是:http://skully.hopto.org:8000
说我有一个二进制文件; 它包含正二进制数,但以大端编写为32位整数
我该如何阅读此文件?我现在有这个.
int main() {
FILE * fp;
char buffer[4];
int num = 0;
fp=fopen("file.bin","rb");
while ( fread(&buffer, 1, 4,fp) != 0) {
// I think buffer should be 32 bit integer I read,
// how can I let num equal to 32 bit big endian integer?
}
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我编写了以下代码将解码后的视频帧转换为PNG图像.代码不会崩溃,但存储在'avpkt'中的图像数据会产生全绿色图像.我究竟做错了什么?任何帮助,将不胜感激.
// pFrame - the decoded frame
// avpkt - the packet to fill with the converted image
void convert_image(AVCodecContext *pCodecCtx, AVFrame *pFrame, AVPacket *avpkt, int *got_packet_ptr) {
AVCodecContext *codecCtx;
AVCodec *codec;
*got_packet_ptr = 0;
codec = avcodec_find_encoder(TARGET_IMAGE_CODEC);
if (!codec) {
printf("avcodec_find_decoder() failed to find decoder\n");
goto fail;
}
codecCtx = avcodec_alloc_context3(codec);
if (!codecCtx) {
printf("avcodec_alloc_context3 failed\n");
goto fail;
}
codecCtx->bit_rate = pCodecCtx->bit_rate;
codecCtx->width = pCodecCtx->width;
codecCtx->height = pCodecCtx->height;
codecCtx->pix_fmt = TARGET_IMAGE_FORMAT;
codecCtx->codec_type = AVMEDIA_TYPE_VIDEO;
codecCtx->time_base.num = pCodecCtx->time_base.num;
codecCtx->time_base.den = …Run Code Online (Sandbox Code Playgroud) android ×4
c++ ×2
ffmpeg ×2
metadata ×2
alarmmanager ×1
android-ndk ×1
ant ×1
c ×1
hash ×1
java ×1
keyboard ×1
user-input ×1