Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
NotesChapter
ijkplayer
提交
b4575a94
I
ijkplayer
项目概览
NotesChapter
/
ijkplayer
与 Fork 源项目一致
从无法访问的项目Fork
通知
5
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
I
ijkplayer
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
b4575a94
编写于
6月 05, 2013
作者:
Z
Zhang Rui
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ijkmediaplayer: AndroidMediaPlayer: attach android.media.MediaPlayer
上级
135b5fec
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
109 addition
and
38 deletion
+109
-38
ijkmediaplayer/src/tv/danmaku/ijk/media/player/AbstractMediaPlayer.java
.../src/tv/danmaku/ijk/media/player/AbstractMediaPlayer.java
+25
-24
ijkmediaplayer/src/tv/danmaku/ijk/media/player/AndroidMediaPlayer.java
...r/src/tv/danmaku/ijk/media/player/AndroidMediaPlayer.java
+75
-1
ijkmediaplayer/src/tv/danmaku/ijk/media/player/IjkMediaPlayer.java
...layer/src/tv/danmaku/ijk/media/player/IjkMediaPlayer.java
+9
-13
未找到文件。
ijkmediaplayer/src/tv/danmaku/ijk/media/player/AbstractMediaPlayer.java
浏览文件 @
b4575a94
...
...
@@ -175,44 +175,45 @@ public abstract class AbstractMediaPlayer {
mOnInfoListener
=
null
;
}
protected
final
void
notifyOnPrepared
(
AbstractMediaPlayer
mp
)
{
if
(
mOnPreparedListener
!=
null
)
mOnPreparedListener
.
onPrepared
(
mp
);
protected
static
final
void
notifyOnPrepared
(
AbstractMediaPlayer
mp
)
{
if
(
m
p
!=
null
&&
mp
.
m
OnPreparedListener
!=
null
)
m
p
.
m
OnPreparedListener
.
onPrepared
(
mp
);
}
protected
final
void
notifyOnCompletion
(
AbstractMediaPlayer
mp
)
{
if
(
mOnCompletionListener
!=
null
)
mOnCompletionListener
.
onCompletion
(
mp
);
protected
static
final
void
notifyOnCompletion
(
AbstractMediaPlayer
mp
)
{
if
(
m
p
!=
null
&&
mp
.
m
OnCompletionListener
!=
null
)
m
p
.
m
OnCompletionListener
.
onCompletion
(
mp
);
}
protected
final
void
notifyOnBufferingUpdate
(
AbstractMediaPlayer
mp
,
protected
static
final
void
notifyOnBufferingUpdate
(
AbstractMediaPlayer
mp
,
int
percent
)
{
if
(
mOnBufferingUpdateListener
!=
null
)
mOnBufferingUpdateListener
.
onBufferingUpdate
(
mp
,
percent
);
if
(
m
p
!=
null
&&
mp
.
m
OnBufferingUpdateListener
!=
null
)
m
p
.
m
OnBufferingUpdateListener
.
onBufferingUpdate
(
mp
,
percent
);
}
protected
final
void
notifyOnSeekComplete
(
AbstractMediaPlayer
mp
)
{
if
(
mOnSeekCompleteListener
!=
null
)
mOnSeekCompleteListener
.
onSeekComplete
(
mp
);
protected
static
final
void
notifyOnSeekComplete
(
AbstractMediaPlayer
mp
)
{
if
(
m
p
!=
null
&&
mp
.
m
OnSeekCompleteListener
!=
null
)
m
p
.
m
OnSeekCompleteListener
.
onSeekComplete
(
mp
);
}
protected
final
void
notifyOnVideoSizeChanged
(
AbstractMediaPlayer
mp
,
int
width
,
int
height
)
{
if
(
mOnVideoSizeChangedListener
!=
null
)
mOnVideoSizeChangedListener
.
onVideoSizeChanged
(
mp
,
width
,
height
);
protected
static
final
void
notifyOnVideoSizeChanged
(
AbstractMediaPlayer
mp
,
int
width
,
int
height
)
{
if
(
mp
!=
null
&&
mp
.
mOnVideoSizeChangedListener
!=
null
)
mp
.
mOnVideoSizeChangedListener
.
onVideoSizeChanged
(
mp
,
width
,
height
);
}
protected
final
boolean
notifyOnError
(
AbstractMediaPlayer
mp
,
int
what
,
int
extra
)
{
if
(
mOnErrorListener
!=
null
)
return
mOnErrorListener
.
onError
(
mp
,
what
,
extra
);
protected
static
final
boolean
notifyOnError
(
AbstractMediaPlayer
mp
,
int
what
,
int
extra
)
{
if
(
m
p
!=
null
&&
mp
.
m
OnErrorListener
!=
null
)
return
m
p
.
m
OnErrorListener
.
onError
(
mp
,
what
,
extra
);
return
false
;
}
protected
final
boolean
notifyOnInfo
(
AbstractMediaPlayer
mp
,
int
what
,
int
extra
)
{
if
(
mOnInfoListener
!=
null
)
return
mOnInfoListener
.
onInfo
(
mp
,
what
,
extra
);
protected
static
final
boolean
notifyOnInfo
(
AbstractMediaPlayer
mp
,
int
what
,
int
extra
)
{
if
(
m
p
!=
null
&&
mp
.
m
OnInfoListener
!=
null
)
return
m
p
.
m
OnInfoListener
.
onInfo
(
mp
,
what
,
extra
);
return
false
;
}
}
ijkmediaplayer/src/tv/danmaku/ijk/media/player/AndroidMediaPlayer.java
浏览文件 @
b4575a94
...
...
@@ -20,17 +20,21 @@
package
tv.danmaku.ijk.media.player
;
import
java.io.IOException
;
import
java.lang.ref.WeakReference
;
import
android.content.Context
;
import
android.media.MediaPlayer
;
import
android.view.Surface
;
import
android.view.SurfaceHolder
;
public
class
AndroidMediaPlayer
extends
AbstractMediaPlayer
{
public
final
class
AndroidMediaPlayer
extends
AbstractMediaPlayer
{
private
MediaPlayer
mInternalMediaPlayer
;
private
MediaPlayerListenerAdapter
mInternalListenerAdapter
;
public
AndroidMediaPlayer
()
{
mInternalMediaPlayer
=
new
MediaPlayer
();
mInternalListenerAdapter
=
new
MediaPlayerListenerAdapter
(
this
);
attachInternalListeners
();
}
@Override
...
...
@@ -112,15 +116,85 @@ public class AndroidMediaPlayer extends AbstractMediaPlayer {
@Override
public
void
release
()
{
mInternalMediaPlayer
.
release
();
resetListeners
();
attachInternalListeners
();
}
@Override
public
void
reset
()
{
mInternalMediaPlayer
.
reset
();
resetListeners
();
attachInternalListeners
();
}
@Override
public
void
setAudioStreamType
(
int
streamtype
)
{
mInternalMediaPlayer
.
setAudioStreamType
(
streamtype
);
}
/*--------------------
* Listeners adapter
*/
private
final
void
attachInternalListeners
()
{
mInternalMediaPlayer
.
setOnPreparedListener
(
mInternalListenerAdapter
);
mInternalMediaPlayer
.
setOnBufferingUpdateListener
(
mInternalListenerAdapter
);
mInternalMediaPlayer
.
setOnCompletionListener
(
mInternalListenerAdapter
);
mInternalMediaPlayer
.
setOnSeekCompleteListener
(
mInternalListenerAdapter
);
mInternalMediaPlayer
.
setOnVideoSizeChangedListener
(
mInternalListenerAdapter
);
mInternalMediaPlayer
.
setOnErrorListener
(
mInternalListenerAdapter
);
mInternalMediaPlayer
.
setOnInfoListener
(
mInternalListenerAdapter
);
}
private
static
class
MediaPlayerListenerAdapter
implements
MediaPlayer
.
OnPreparedListener
,
MediaPlayer
.
OnCompletionListener
,
MediaPlayer
.
OnBufferingUpdateListener
,
MediaPlayer
.
OnSeekCompleteListener
,
MediaPlayer
.
OnVideoSizeChangedListener
,
MediaPlayer
.
OnErrorListener
,
MediaPlayer
.
OnInfoListener
{
public
WeakReference
<
AndroidMediaPlayer
>
mWeakMediaPlayer
;
public
MediaPlayerListenerAdapter
(
AndroidMediaPlayer
mp
)
{
mWeakMediaPlayer
=
new
WeakReference
<
AndroidMediaPlayer
>(
mp
);
}
@Override
public
boolean
onInfo
(
MediaPlayer
mp
,
int
what
,
int
extra
)
{
return
notifyOnInfo
(
mWeakMediaPlayer
.
get
(),
what
,
extra
);
}
@Override
public
boolean
onError
(
MediaPlayer
mp
,
int
what
,
int
extra
)
{
return
notifyOnError
(
mWeakMediaPlayer
.
get
(),
what
,
extra
);
}
@Override
public
void
onVideoSizeChanged
(
MediaPlayer
mp
,
int
width
,
int
height
)
{
notifyOnVideoSizeChanged
(
mWeakMediaPlayer
.
get
(),
width
,
height
);
}
@Override
public
void
onSeekComplete
(
MediaPlayer
mp
)
{
notifyOnSeekComplete
(
mWeakMediaPlayer
.
get
());
}
@Override
public
void
onBufferingUpdate
(
MediaPlayer
mp
,
int
percent
)
{
notifyOnBufferingUpdate
(
mWeakMediaPlayer
.
get
(),
percent
);
}
@Override
public
void
onCompletion
(
MediaPlayer
mp
)
{
notifyOnCompletion
(
mWeakMediaPlayer
.
get
());
}
@Override
public
void
onPrepared
(
MediaPlayer
mp
)
{
notifyOnPrepared
(
mWeakMediaPlayer
.
get
());
}
}
}
ijkmediaplayer/src/tv/danmaku/ijk/media/player/IjkMediaPlayer.java
浏览文件 @
b4575a94
...
...
@@ -33,7 +33,7 @@ import android.os.PowerManager;
import
android.view.Surface
;
import
android.view.SurfaceHolder
;
public
class
IjkMediaPlayer
extends
AbstractMediaPlayer
{
public
final
class
IjkMediaPlayer
extends
AbstractMediaPlayer
{
private
final
static
String
TAG
=
IjkMediaPlayer
.
class
.
getName
();
static
{
...
...
@@ -332,33 +332,30 @@ public class IjkMediaPlayer extends AbstractMediaPlayer {
}
switch
(
msg
.
what
)
{
case
MEDIA_PREPARED:
mIjkMediaPlayer
.
notifyOnPrepared
(
mIjkMediaPlayer
);
notifyOnPrepared
(
mIjkMediaPlayer
);
return
;
case
MEDIA_PLAYBACK_COMPLETE:
mIjkMediaPlayer
.
notifyOnCompletion
(
mIjkMediaPlayer
);
notifyOnCompletion
(
mIjkMediaPlayer
);
mIjkMediaPlayer
.
stayAwake
(
false
);
return
;
case
MEDIA_BUFFERING_UPDATE:
mIjkMediaPlayer
.
notifyOnBufferingUpdate
(
mIjkMediaPlayer
,
msg
.
arg1
);
notifyOnBufferingUpdate
(
mIjkMediaPlayer
,
msg
.
arg1
);
return
;
case
MEDIA_SEEK_COMPLETE:
mIjkMediaPlayer
.
notifyOnSeekComplete
(
mIjkMediaPlayer
);
notifyOnSeekComplete
(
mIjkMediaPlayer
);
return
;
case
MEDIA_SET_VIDEO_SIZE:
mIjkMediaPlayer
.
notifyOnVideoSizeChanged
(
mIjkMediaPlayer
,
msg
.
arg1
,
msg
.
arg2
);
notifyOnVideoSizeChanged
(
mIjkMediaPlayer
,
msg
.
arg1
,
msg
.
arg2
);
return
;
case
MEDIA_ERROR:
DebugLog
.
e
(
TAG
,
"Error ("
+
msg
.
arg1
+
","
+
msg
.
arg2
+
")"
);
if
(!
mIjkMediaPlayer
.
notifyOnError
(
mIjkMediaPlayer
,
msg
.
arg1
,
msg
.
arg2
))
{
mIjkMediaPlayer
.
notifyOnCompletion
(
mIjkMediaPlayer
);
if
(!
notifyOnError
(
mIjkMediaPlayer
,
msg
.
arg1
,
msg
.
arg2
))
{
notifyOnCompletion
(
mIjkMediaPlayer
);
}
mIjkMediaPlayer
.
stayAwake
(
false
);
return
;
...
...
@@ -367,8 +364,7 @@ public class IjkMediaPlayer extends AbstractMediaPlayer {
if
(
msg
.
arg1
!=
MEDIA_INFO_VIDEO_TRACK_LAGGING
)
{
DebugLog
.
i
(
TAG
,
"Info ("
+
msg
.
arg1
+
","
+
msg
.
arg2
+
")"
);
}
mIjkMediaPlayer
.
notifyOnInfo
(
mIjkMediaPlayer
,
msg
.
arg1
,
msg
.
arg2
);
notifyOnInfo
(
mIjkMediaPlayer
,
msg
.
arg1
,
msg
.
arg2
);
// No real default action so far.
return
;
case
MEDIA_TIMED_TEXT:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录