WEB开发网
开发学院手机开发Android 开发 Android 下的PVPlayer的实现 阅读

Android 下的PVPlayer的实现

 2010-09-10 01:08:00 来源:WEB开发网   
核心提示:int mSharedFd;status_t mInit;int mDuration;#ifdef MAX_OPENCORE_INSTANCESstatic volatile int32_t sNumInstances;#endif};1、 virtual status_t initCheck(); //这个函数会在我

int mSharedFd;

status_t mInit;

int mDuration;

#ifdef MAX_OPENCORE_INSTANCES

static volatile int32_t sNumInstances;

#endif

};

1、 virtual status_t initCheck(); //这个函数会在我们创建播放器的时候调用,可以做一些基本的初始化工作,如下所示:

static sp createPlayer(player_type playerType, void* cookie,

notify_callback_f notifyFunc)

{

sp p;

switch (playerType) {

case PV_PLAYER:

LOGV(" create PVPlayer");

p = new PVPlayer();

break;

case SONIVOX_PLAYER:

LOGV(" create MidiFile");

p = new MidiFile();

break;

case VORBIS_PLAYER:

LOGV(" create VorbisPlayer");

p = new VorbisPlayer();

break;

}

if (p != NULL) {

if (p->initCheck() == NO_ERROR) {

p->setNotifyCallback(cookie, notifyFunc);

} else {

p.clear();

}

}

if (p == NULL) {

LOGE("Failed to create player object");

}

return p;

}

发现还有setNotifyCallback函数也会一起调用。

2、 两种设置源的方式 setDataSource,一个是打开一个文件重头开始,一个事从文件的中间开始。

status_t MediaPlayerService::Client::setDataSource(const char *url)

{

LOGV("setDataSource(%s)", url);

if (url == NULL)

return UNKNOWN_ERROR;

if (strncmp(url, "content://", 10) == 0) {

// get a filedescriptor for the content Uri and

// pass it to the setDataSource(fd) method

String16 url16(url);

int fd = android::openContentProviderFile(url16);//由content得到文件的句柄

if (fd < 0)

{

LOGE("Couldn't open fd for %s", url);

上一页  1 2 3 4 5 6 7  下一页

Tags:Android PVPlayer 实现

编辑录入:coldstar [复制链接] [打 印]
赞助商链接