Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
qq_26386469
GSYVideoPlayer
提交
c7737545
G
GSYVideoPlayer
项目概览
qq_26386469
/
GSYVideoPlayer
与 Fork 源项目一致
从无法访问的项目Fork
通知
5
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
GSYVideoPlayer
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
c7737545
编写于
3月 20, 2017
作者:
S
shuyu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
增加超时接口
上级
76dfc386
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
80 addition
and
3 deletion
+80
-3
UPDATE_VERSION.md
UPDATE_VERSION.md
+1
-0
app/src/main/java/com/example/gsyvideoplayer/DetailPlayer.java
...rc/main/java/com/example/gsyvideoplayer/DetailPlayer.java
+2
-0
gsyVideoPlayer/src/main/java/com/shuyu/gsyvideoplayer/GSYVideoManager.java
...c/main/java/com/shuyu/gsyvideoplayer/GSYVideoManager.java
+77
-3
未找到文件。
UPDATE_VERSION.md
浏览文件 @
c7737545
...
...
@@ -2,6 +2,7 @@
### 1.6.1(2017-03-20)
*
setSpeed接口修改为支持播放中设置
*
内存优化
### 1.6.0 (2017-02-19)
*
update ijkplayer to 0.7.7.1。
...
...
app/src/main/java/com/example/gsyvideoplayer/DetailPlayer.java
浏览文件 @
c7737545
...
...
@@ -65,6 +65,8 @@ public class DetailPlayer extends AppCompatActivity {
list.add(videoOptionModel);
GSYVideoManager.instance().setOptionModelList(list);*/
//GSYVideoManager.instance().setTimeOut(4000, true);
//增加封面
ImageView
imageView
=
new
ImageView
(
this
);
imageView
.
setScaleType
(
ImageView
.
ScaleType
.
CENTER_CROP
);
...
...
gsyVideoPlayer/src/main/java/com/shuyu/gsyvideoplayer/GSYVideoManager.java
浏览文件 @
c7737545
...
...
@@ -3,7 +3,7 @@ package com.shuyu.gsyvideoplayer;
import
android.content.Context
;
import
android.media.AudioManager
;
import
android.media.Media
MetadataRetriev
er
;
import
android.media.Media
Play
er
;
import
android.net.Uri
;
import
android.os.Handler
;
import
android.os.HandlerThread
;
...
...
@@ -27,7 +27,6 @@ import com.shuyu.gsyvideoplayer.utils.StorageUtils;
import
java.io.File
;
import
java.io.IOException
;
import
java.lang.ref.WeakReference
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -54,6 +53,8 @@ public class GSYVideoManager implements IMediaPlayer.OnPreparedListener, IMediaP
public
static
final
int
HANDLER_SETDISPLAY
=
1
;
public
static
final
int
HANDLER_RELEASE
=
2
;
public
static
final
int
BUFFER_TIME_OUT_ERROR
=
-
192
;
//外部超时错误码
private
AbstractMediaPlayer
mediaPlayer
;
private
HandlerThread
mMediaHandlerThread
;
private
MediaHandler
mMediaHandler
;
...
...
@@ -82,10 +83,15 @@ public class GSYVideoManager implements IMediaPlayer.OnPreparedListener, IMediaP
private
int
buffterPoint
;
private
int
timeOut
=
8
*
1000
;
private
int
videoType
=
GSYVideoType
.
IJKPLAYER
;
private
boolean
needMute
=
false
;
//是否需要静音
private
boolean
needTimeOutOther
;
//是否需要外部超时判断
public
static
synchronized
GSYVideoManager
instance
()
{
if
(
videoManager
==
null
)
{
videoManager
=
new
GSYVideoManager
();
...
...
@@ -239,6 +245,7 @@ public class GSYVideoManager implements IMediaPlayer.OnPreparedListener, IMediaP
proxy
.
unregisterCacheListener
(
GSYVideoManager
.
this
);
}
buffterPoint
=
0
;
cancelTimeOutBuffer
();
break
;
}
}
...
...
@@ -318,6 +325,38 @@ public class GSYVideoManager implements IMediaPlayer.OnPreparedListener, IMediaP
}
/**
* 启动十秒的定时器进行 缓存操作
*/
private
void
startTimeOutBuffer
()
{
// 启动定时
Debuger
.
printfError
(
"startTimeOutBuffer"
);
mainThreadHandler
.
postDelayed
(
mTimeOutRunnable
,
timeOut
);
}
/**
* 取消 十秒的定时器进行 缓存操作
*/
private
void
cancelTimeOutBuffer
()
{
Debuger
.
printfError
(
"cancelTimeOutBuffer"
);
// 取消定时
if
(
needTimeOutOther
)
mainThreadHandler
.
removeCallbacks
(
mTimeOutRunnable
);
}
private
Runnable
mTimeOutRunnable
=
new
Runnable
()
{
@Override
public
void
run
()
{
if
(
listener
!=
null
)
{
Debuger
.
printfError
(
"time out for error listener"
);
listener
().
onError
(
BUFFER_TIME_OUT_ERROR
,
BUFFER_TIME_OUT_ERROR
);
}
}
};
private
void
showDisplay
(
Message
msg
)
{
if
(
msg
.
obj
==
null
&&
mediaPlayer
!=
null
)
{
mediaPlayer
.
setSurface
(
null
);
...
...
@@ -377,6 +416,7 @@ public class GSYVideoManager implements IMediaPlayer.OnPreparedListener, IMediaP
mainThreadHandler
.
post
(
new
Runnable
()
{
@Override
public
void
run
()
{
cancelTimeOutBuffer
();
if
(
listener
!=
null
)
{
listener
().
onAutoCompletion
();
}
...
...
@@ -405,6 +445,7 @@ public class GSYVideoManager implements IMediaPlayer.OnPreparedListener, IMediaP
mainThreadHandler
.
post
(
new
Runnable
()
{
@Override
public
void
run
()
{
cancelTimeOutBuffer
();
if
(
listener
!=
null
)
{
listener
().
onSeekComplete
();
}
...
...
@@ -417,6 +458,7 @@ public class GSYVideoManager implements IMediaPlayer.OnPreparedListener, IMediaP
mainThreadHandler
.
post
(
new
Runnable
()
{
@Override
public
void
run
()
{
cancelTimeOutBuffer
();
if
(
listener
!=
null
)
{
listener
().
onError
(
what
,
extra
);
}
...
...
@@ -430,6 +472,13 @@ public class GSYVideoManager implements IMediaPlayer.OnPreparedListener, IMediaP
mainThreadHandler
.
post
(
new
Runnable
()
{
@Override
public
void
run
()
{
if
(
needTimeOutOther
)
{
if
(
what
==
MediaPlayer
.
MEDIA_INFO_BUFFERING_START
)
{
startTimeOutBuffer
();
}
else
if
(
what
==
MediaPlayer
.
MEDIA_INFO_BUFFERING_END
)
{
cancelTimeOutBuffer
();
}
}
if
(
listener
!=
null
)
{
listener
().
onInfo
(
what
,
extra
);
}
...
...
@@ -557,10 +606,35 @@ public class GSYVideoManager implements IMediaPlayer.OnPreparedListener, IMediaP
this
.
needMute
=
needMute
;
if
(
mediaPlayer
!=
null
)
{
if
(
needMute
)
{
mediaPlayer
.
setVolume
(
0
,
0
);
mediaPlayer
.
setVolume
(
0
,
0
);
}
else
{
mediaPlayer
.
setVolume
(
1
,
1
);
}
}
}
public
int
getTimeOut
()
{
return
timeOut
;
}
public
boolean
isNeedTimeOutOther
()
{
return
needTimeOutOther
;
}
/**
* 是否需要在buffer缓冲时,增加外部超时判断,目前对于刚开始超时还没效果
* <p>
* 超时后会走onError接口,播放器通过onPlayError回调出
* <p>
* 错误码为 : BUFFER_TIME_OUT_ERROR = -192
* (因为ijk的超时有时候无效)
*
* @param timeOut 超时时间,毫秒 默认8000
* @param needTimeOutOther 是否开始,默认关闭
*/
public
void
setTimeOut
(
int
timeOut
,
boolean
needTimeOutOther
)
{
this
.
timeOut
=
timeOut
;
this
.
needTimeOutOther
=
needTimeOutOther
;
}
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录