Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
qq_25606643
ijkplayer
提交
b11160dc
I
ijkplayer
项目概览
qq_25606643
/
ijkplayer
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
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,发现更多精彩内容 >>
提交
b11160dc
编写于
1月 04, 2014
作者:
B
bbcallen
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ios: handle audio interruption
上级
faa37f2b
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
139 addition
and
1 deletion
+139
-1
ios/IJKMediaPlayer/IJKMediaPlayer.xcodeproj/project.pbxproj
ios/IJKMediaPlayer/IJKMediaPlayer.xcodeproj/project.pbxproj
+6
-0
ios/IJKMediaPlayer/IJKMediaPlayer/IJKAudioKit.h
ios/IJKMediaPlayer/IJKMediaPlayer/IJKAudioKit.h
+23
-0
ios/IJKMediaPlayer/IJKMediaPlayer/IJKAudioKit.m
ios/IJKMediaPlayer/IJKMediaPlayer/IJKAudioKit.m
+91
-0
ios/IJKMediaPlayer/IJKMediaPlayer/IJKMPMoviePlayerController.m
...JKMediaPlayer/IJKMediaPlayer/IJKMPMoviePlayerController.m
+19
-1
未找到文件。
ios/IJKMediaPlayer/IJKMediaPlayer.xcodeproj/project.pbxproj
浏览文件 @
b11160dc
...
...
@@ -42,6 +42,7 @@
E690403217EAFC6100CFD954
/* ijksdl_thread.c in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
E690400C17EAFC6100CFD954
/* ijksdl_thread.c */
;
};
E690403317EAFC6100CFD954
/* ijksdl_timer.c in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
E690400E17EAFC6100CFD954
/* ijksdl_timer.c */
;
};
E690403417EAFC6100CFD954
/* ijksdl_vout.c in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
E690401117EAFC6100CFD954
/* ijksdl_vout.c */
;
};
E6EE92A3187810C5009EAB56
/* IJKAudioKit.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
E6EE92A2187810C5009EAB56
/* IJKAudioKit.m */
;
};
E6F727B817F2B1B10043623F
/* IJKMediaModule.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
E6F727B717F2B1B10043623F
/* IJKMediaModule.m */
;
};
E6F727BB17F2D9D40043623F
/* IJKFFMoviePlayerDef.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
E6F727BA17F2D9D30043623F
/* IJKFFMoviePlayerDef.m */
;
};
E6F727BC17F40C1C0043623F
/* IJKMediaPlayer.h in CopyFiles */
=
{
isa
=
PBXBuildFile
;
fileRef
=
E66F8DC217EECB1E00354D80
/* IJKMediaPlayer.h */
;
};
...
...
@@ -225,6 +226,8 @@
E690403717EB079500CFD954
/* ijklog.h */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.h
;
path
=
ijklog.h
;
sourceTree
=
"<group>"
;
};
E690403917EB079500CFD954
/* ijkutil_ios.h */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.h
;
path
=
ijkutil_ios.h
;
sourceTree
=
"<group>"
;
};
E690403A17EB079500CFD954
/* loghelp.h */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.h
;
path
=
loghelp.h
;
sourceTree
=
"<group>"
;
};
E6EE92A1187810C5009EAB56
/* IJKAudioKit.h */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.h
;
name
=
IJKAudioKit.h
;
path
=
IJKMediaPlayer/IJKAudioKit.h
;
sourceTree
=
"<group>"
;
};
E6EE92A2187810C5009EAB56
/* IJKAudioKit.m */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.objc
;
name
=
IJKAudioKit.m
;
path
=
IJKMediaPlayer/IJKAudioKit.m
;
sourceTree
=
"<group>"
;
};
E6F727B617F2B1B10043623F
/* IJKMediaModule.h */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.h
;
name
=
IJKMediaModule.h
;
path
=
IJKMediaPlayer/IJKMediaModule.h
;
sourceTree
=
"<group>"
;
};
E6F727B717F2B1B10043623F
/* IJKMediaModule.m */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.objc
;
name
=
IJKMediaModule.m
;
path
=
IJKMediaPlayer/IJKMediaModule.m
;
sourceTree
=
"<group>"
;
};
E6F727B917F2D9D30043623F
/* IJKFFMoviePlayerDef.h */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.h
;
path
=
IJKFFMoviePlayerDef.h
;
sourceTree
=
"<group>"
;
};
...
...
@@ -615,6 +618,8 @@
E66F8DC217EECB1E00354D80
/* IJKMediaPlayer.h */
,
E6716E491807E5FC00B3FBC1
/* IJKMediaUtils.h */
,
E6716E4A1807E5FC00B3FBC1
/* IJKMediaUtils.m */
,
E6EE92A1187810C5009EAB56
/* IJKAudioKit.h */
,
E6EE92A2187810C5009EAB56
/* IJKAudioKit.m */
,
);
name
=
IJKMediaPlayer
;
sourceTree
=
"<group>"
;
...
...
@@ -670,6 +675,7 @@
isa
=
PBXSourcesBuildPhase
;
buildActionMask
=
2147483647
;
files
=
(
E6EE92A3187810C5009EAB56
/* IJKAudioKit.m in Sources */
,
E690401F17EAFC6100CFD954
/* ff_cmdutils.c in Sources */
,
E690402017EAFC6100CFD954
/* ff_ffplay.c in Sources */
,
E690402717EAFC6100CFD954
/* image_convert.c in Sources */
,
...
...
ios/IJKMediaPlayer/IJKMediaPlayer/IJKAudioKit.h
0 → 100644
浏览文件 @
b11160dc
//
// IJKAudioKit.h
// IJKMediaPlayer
//
// Created by ZhangRui on 14-1-4.
// Copyright (c) 2014年 bilibili. All rights reserved.
//
#import <Foundation/Foundation.h>
@protocol
IJKAudioSessionDelegate
<
NSObject
>
-
(
void
)
ijkAudioBeginInterruption
;
-
(
void
)
ijkAudioEndInterruption
;
@end
@interface
IJKAudioKit
:
NSObject
+
(
IJKAudioKit
*
)
sharedInstance
;
-
(
void
)
setupAudioSession
:(
id
<
IJKAudioSessionDelegate
>
)
delegate
;
@end
ios/IJKMediaPlayer/IJKMediaPlayer/IJKAudioKit.m
0 → 100644
浏览文件 @
b11160dc
//
// IJKAudioKit.m
// IJKMediaPlayer
//
// Created by ZhangRui on 14-1-4.
// Copyright (c) 2014年 bilibili. All rights reserved.
//
#import "IJKAudioKit.h"
@implementation
IJKAudioKit
{
__weak
id
<
IJKAudioSessionDelegate
>
_delegate
;
BOOL
_audioSessionInitialized
;
}
+
(
IJKAudioKit
*
)
sharedInstance
{
static
IJKAudioKit
*
sAudioKit
=
nil
;
static
dispatch_once_t
onceToken
;
dispatch_once
(
&
onceToken
,
^
{
sAudioKit
=
[[
IJKAudioKit
alloc
]
init
];
});
return
sAudioKit
;
}
-
(
void
)
setupAudioSession
:(
id
<
IJKAudioSessionDelegate
>
)
delegate
{
_delegate
=
nil
;
if
(
delegate
==
nil
)
{
return
;
}
OSStatus
status
=
noErr
;
if
(
!
_audioSessionInitialized
)
{
status
=
AudioSessionInitialize
(
NULL
,
kCFRunLoopCommonModes
,
IjkAudioSessionInterruptionListener
,
NULL
);
if
(
status
!=
noErr
)
{
NSLog
(
@"IJKAudioKit: AudioSessionInitialize failed (%d)"
,
(
int
)
status
);
return
;
}
_audioSessionInitialized
=
YES
;
}
/* Set audio session to mediaplayback */
UInt32
sessionCategory
=
kAudioSessionCategory_MediaPlayback
;
status
=
AudioSessionSetProperty
(
kAudioSessionProperty_AudioCategory
,
sizeof
(
sessionCategory
),
&
sessionCategory
);
if
(
status
!=
noErr
)
{
NSLog
(
@"IJKAudioKit: AudioSessionSetProperty(kAudioSessionProperty_AudioCategory) failed (%d)"
,
(
int
)
status
);
return
;
}
status
=
AudioSessionSetActive
(
true
);
if
(
status
!=
noErr
)
{
NSLog
(
@"IJKAudioKit: AudioSessionSetActive(true) failed (%d)"
,
(
int
)
status
);
return
;
}
_delegate
=
delegate
;
return
;
}
static
void
IjkAudioSessionInterruptionListener
(
void
*
inClientData
,
UInt32
inInterruptionState
)
{
id
<
IJKAudioSessionDelegate
>
delegate
=
[
IJKAudioKit
sharedInstance
]
->
_delegate
;
if
(
delegate
==
nil
)
return
;
switch
(
inInterruptionState
)
{
case
kAudioSessionBeginInterruption
:
{
NSLog
(
@"kAudioSessionBeginInterruption
\n
"
);
dispatch_async
(
dispatch_get_main_queue
(),
^
{
AudioSessionSetActive
(
false
);
[
delegate
ijkAudioBeginInterruption
];
});
break
;
}
case
kAudioSessionEndInterruption
:
{
NSLog
(
@"kAudioSessionEndInterruption
\n
"
);
dispatch_async
(
dispatch_get_main_queue
(),
^
{
AudioSessionSetActive
(
true
);
[
delegate
ijkAudioEndInterruption
];
});
break
;
}
}
}
@end
ios/IJKMediaPlayer/IJKMediaPlayer/IJKMPMoviePlayerController.m
浏览文件 @
b11160dc
...
...
@@ -21,6 +21,10 @@
*/
#import "IJKMPMoviePlayerController.h"
#import "IJKAudioKit.h"
@interface
IJKMPMoviePlayerController
()
<
IJKAudioSessionDelegate
>
@end
@implementation
IJKMPMoviePlayerController
...
...
@@ -50,9 +54,11 @@
self
.
controlStyle
=
MPMovieControlStyleNone
;
self
.
scalingMode
=
MPMovieScalingModeAspectFit
;
self
.
shouldAutoplay
=
YES
;
self
.
useApplicationAudioSession
=
NO
;
[
self
IJK_installMovieNotificationObservers
];
self
.
useApplicationAudioSession
=
YES
;
[[
IJKAudioKit
sharedInstance
]
setupAudioSession
:
self
];
}
return
self
;
}
...
...
@@ -132,4 +138,16 @@
[[
NSNotificationCenter
defaultCenter
]
postNotificationName
:
IJKMoviePlayerPlaybackStateDidChangeNotification
object
:
notification
.
object
userInfo
:
notification
.
userInfo
];
}
#pragma mark IJKAudioSessionDelegate
-
(
void
)
ijkAudioBeginInterruption
{
[
self
pause
];
}
-
(
void
)
ijkAudioEndInterruption
{
[
self
pause
];
}
@end
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录