手机扬声器和耳机自动切换打开是不是就不能用耳机听歌了

手机喇叭坏了!用耳机还能听吗?_百度知道
手机喇叭坏了!用耳机还能听吗?
我有更好的答案
你好! 可以的,耳机不是坏的,而且听筒是好的就行了,和喇叭无关!!!
????那我的手机摔了一下,没声音了,用耳机也没声音?
采纳率:69%
如果是喇叭的问题,用耳机是可以听的。
肯定可以了
当然可以啊
其他1条回答
为您推荐:
其他类似问题
您可能关注的内容
耳机的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。||||||||||
||||||||||
查看: 9734|回复: 26
手机扬声器代替耳机听筒的妙用
阅读权限55
在线时间 小时
注册家电维修技术论坛,与同行畅聊维修技术,享更多技术论坛功能。
才可以下载或查看,没有帐号?
估计音乐爱好者手中有许多损坏单只听筒的耳机,尤其高档的修没店铺修,丢弃有舍不得,最近一地摊买电器的朋友送我一些扬声器,其中一种小型的正可代替我多年舍不得丢弃的鬼子产的耳机,更换后音质不亚于原装品.
阅读权限120
在线时间 小时
谢谢分享,有机会也试试。
阅读权限35
在线时间 小时
爱动手的人总能变废为宝
阅读权限35
在线时间 小时
bucuo不错的方法
阅读权限10
在线时间 小时
很好的做法。
阅读权限60
在线时间 小时
阻值一样吗,如不同会把耳朵弄坏的,
阅读权限45
在线时间 小时
建议使用16欧以上的!
阅读权限55
在线时间 小时
谢谢分享,有机会也试试。
谢谢版主的回帖!
阅读权限60
在线时间 小时
我的森海360耳机坏了一个,在网上买的是760的耳机单元来换的,但无法验证是否为真货,听者倒似乎比360好
阅读权限25
在线时间 小时
谢谢楼主分享!这么说耳机喇叭同样可代换手机喇叭了,楼主真是奇才啊,收下....
( 鄂ICP备号-1 )&&
Powered by Discuz! X3.2
Comsenz Inc.
CopyRight ©
电子邮箱:admin@jdwx.info
官方网址:
Qiji. All Rights Reserved
Wuhan Qiji Technology Co., Ltd.武汉奇迹科技有限公司版权所有为什么耳机插上打开音乐却停掉,再打开确实扬声器播放
来自 vivo X9
重新查一下耳机奥
来自 vivo X9
用的是哪个耳机
来自 vivo X9
重新查一下耳机奥
来自 vivo Xplay6
RE: 为什么耳机插上打开音乐却停掉,再打开确实扬声器播放
请问您使用的是原装耳机吗?您更换耳机使用试下。
来自 社区电脑版
我的也是,更新系统后就这样了
来自 社区手机版
【X7评测】1600万柔光自拍,为自拍而生
【X7美图】有了“你”就有了光,自拍神器vivo X7|图赏
【X7美图】静待邂逅,vivo X7图赏
【X7Plus美图】更美的大屏手机 vivo X7Plus「图赏」
【X7评测】夏日·乐悠悠|X7摄影美图系列
24小时全国服务热线
400-678-9688
公众号:vivo智能手机
生活号:vivo智能手机
公众号:vivo智能手机
生活号:vivo智能手机
保存二维码iOS 打开扬声器以及插入耳机的操作
废话不多说说一下现状
网上好多关于扬声器的操作,但是问题多多,SDK7.X 和SDK7.X以上版本有点诧异
@interface AudioManager : NSObject
AVAudioPlayer *m_audioP
@property (atomic, readonly)BOOL _isSpeakerOn;
@property (atomic, readonly)BOOL _isHeadsetOn;
+(AudioManager*)
// 打开扬声器
- (void)setSpeakerOn;
// 关闭扬声器
- (void)setSpeakerO
// AudioManager.m
// AonNetAndCallDemo
// Created by zjq on 14-7-21.
// Copyright (c) 2014年 zjq. All rights reserved.
#import AudioManager.h
#define Version [[UIDevice currentDevice].systemVersion floatValue]
@implementation AudioManager
@synthesize _isSpeakerOn;
@synthesize _isHeadsetOn;
- (id)init
self = [super init];
if (self) {
_isSpeakerOn = NO;
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
//默认情况下扬声器播放
[audioSession setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionMixWithOthers error:nil];
[audioSession setActive:YES error:nil];
UInt32 sessionCategory = kAudioSessionCategory_MediaP
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory,
sizeof(sessionCategory),
&sessionCategory);
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_S
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,
sizeof (audioRouteOverride),
&audioRouteOverride);
AudioSessionAddPropertyListener (kAudioSessionProperty_AudioRouteChange,
audioRouteChangeListenerCallback, (__bridge void *)(self));
static AudioManager *_audioManager = NULL;
+(AudioManager*)shared
static dispatch_once_t onceT
dispatch_once(&onceToken, ^{
_audioManager = [[AudioManager alloc] init];
return _audioM
- (void)setSpeakerOn
NSLog(@setSpeakerOn:%d,[NSThread isMainThread]);
UInt32 doChangeDefaultRoute = kAudioSessionOverrideAudioRoute_S
AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryDefaultToSpeaker,
sizeof (doChangeDefaultRoute),
&doChangeDefaultRoute
_isSpeakerOn = [self checkSpeakerOn];
_isHeadsetOn = NO;
//[self resetOutputTarget];
- (void)setSpeakerOff
UInt32 doChangeDefaultRoute = kAudioSessionOverrideAudioRoute_N
AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryDefaultToSpeaker,
sizeof (doChangeDefaultRoute),
&doChangeDefaultRoute
_isSpeakerOn = [self checkSpeakerOn];
- (BOOL)checkSpeakerOn
UInt32 propertySize = sizeof(CFStringRef);
AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &propertySize, &route);
if((route == NULL) || (CFStringGetLength(route) == 0))
// Silent Mode
NSLog(@AudioRoute: SILENT, do nothing!);
NSString* routeStr = (__bridge NSString*)
NSRange speakerRange = [routeStr rangeOfString : @Speaker];
if (speakerRange.location != NSNotFound)
return YES;
return NO;
- (BOOL)hasHeadset
UInt32 propertySize = sizeof(CFStringRef);
AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &propertySize, &route);
if((route == NULL) || (CFStringGetLength(route) == 0))
// Silent Mode
NSLog(@AudioRoute: SILENT, do nothing!);
NSString* routeStr = (__bridge NSString*)
NSLog(@AudioRoute: %@, routeStr);
if ([routeStr isEqualToString:@ReceiverAndMicrophone]) {
// static dispatch_once_t onceT
// dispatch_once(&onceToken, ^{
// [self setSpeakerOn];
[self setSpeakerOn];
NSRange headphoneRange = [routeStr rangeOfString : @Headphone];
NSRange headsetRange = [routeStr rangeOfString : @Headset];
if (headphoneRange.location != NSNotFound)
return YES;
} else if(headsetRange.location != NSNotFound)
return YES;
return NO;
// 判断麦克风是否有用
- (BOOL)hasMicphone
return [[AVAudioSession sharedInstance] isInputAvailable];
- (void)erjiOutPutTarget
BOOL hasHeadset = [self hasHeadset];
if (hasHeadset) {
_isHeadsetOn = YES;
NSLog (@Will Set output target is_headset = %@ ., hasHeadset?@YES:@NO);
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_N
AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute, sizeof(audioRouteOverride), &audioRouteOverride);
- (void)resetOutputTarget
BOOL hasHeadset = [self hasHeadset];
NSLog (@Will Set output target is_headset = %@ ., hasHeadset?@YES:@NO);
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_S
AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute, sizeof(audioRouteOverride), &audioRouteOverride);
_isHeadsetOn = NO;
void audioRouteChangeListenerCallback (void *inUserData, AudioSessionPropertyID inPropertyID, UInt32 inPropertyValueS, const void *inPropertyValue)
if (inPropertyID != kAudioSessionProperty_AudioRouteChange)
// Determines the reason for the route change, to ensure that it is not
// because of a category change.
CFDictionaryRef routeChangeDictionary = (CFDictionaryRef)inPropertyV
CFNumberRef routeChangeReasonRef = (CFNumberRef)CFDictionaryGetValue (routeChangeDictionary, CFSTR (kAudioSession_AudioRouteChangeKey_Reason));
SInt32 routeChangeR
CFNumberGetValue (routeChangeReasonRef, kCFNumberSInt32Type, &routeChangeReason);
NSLog(@[=======%@,inUserData);
AudioManager *pMgr = (__bridge AudioManager *)inUserD
//没有耳机
if (routeChangeReason == kAudioSessionRouteChangeReason_OldDeviceUnavailable)
[pMgr setSpeakerOn];
[pMgr resetOutputTarget];
else if (routeChangeReason == kAudioSessionRouteChangeReason_NewDeviceAvailable)
[pMgr erjiOutPutTarget];
}else if (routeChangeReason == kAudioSessionRouteChangeReason_Override){
[pMgr setSpeakerOn];
[pMgr resetOutputTarget];
NSLog(@--------&%f,IOSVersion);
//if (IOSVersion &= 8.0) {
if (routeChangeReason==8) {
[pMgr hasHeadset];
//- (BOOL)isAirplayActived
// CFDictionaryRef currentRouteDescriptionDictionary =
// UInt32 dataSize = sizeof(currentRouteDescriptionDictionary);
// AudioSessionGetProperty(kAudioSessionProperty_AudioRouteDescription, &dataSize, &tRouteDescriptionDictionary);
// BOOL airplayActived = NO;
// if (currentRouteDescriptionDictionary)
// CFArrayRef outputs = CFDictionaryGetValue(currentRouteDescriptionDictionary, kAudioSession_AudioRouteKey_Outputs);
// if(outputs != NULL && CFArrayGetCount(outputs) & 0)
// CFDictionaryRef currentOutput = CFArrayGetValueAtIndex(outputs, 0);
// //Get the output type (will show airplay / hdmi etc
// CFStringRef outputType = CFDictionaryGetValue(currentOutput, kAudioSession_AudioRouteKey_Type);
// airplayActived = (CFStringCompare(outputType, kAudioSessionOutputRoute_AirPlay, 0) == kCFCompareEqualTo);
// CFRelease(currentRouteDescriptionDictionary);
// return airplayA
- (void)openloudspeaker{
//初始化播放器的时候如下设置
UInt32 sessionCategory = kAudioSessionCategory_MediaP
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory,
sizeof(sessionCategory),
&sessionCategory);
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_S
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,
sizeof (audioRouteOverride),
&audioRouteOverride);
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
//默认情况下扬声器播放
[audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];
[audioSession setActive:YES error:nil];
[self handleNotification:YES];
#pragma mark - 监听听筒or扬声器
- (void) handleNotification:(BOOL)state
[[UIDevice currentDevice] setProximityMonitoringEnabled:state]; //建议在播放之前设置yes,播放结束设置NO,这个功能是开启红外感应
if(state)//添加监听
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(sensorStateChange:) name:@UIDeviceProximityStateDidChangeNotification
object:nil];
else//移除监听
[[NSNotificationCenter defaultCenter] removeObserver:self name:@UIDeviceProximityStateDidChangeNotification object:nil];
//处理监听触发事件
-(void)sensorStateChange:(NSNotificationCenter *)
//如果此时手机靠近面部放在耳朵旁,那么声音将通过听筒输出,并将屏幕变暗(省电啊)
if ([[UIDevice currentDevice] proximityState] == YES)
NSLog(@Device is close to user);
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
NSLog(@Device is not close to user);
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];}

我要回帖

更多关于 电脑扬声器和耳机切换 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信