Skip to content

Commit 7d2045b

Browse files
committed
1.usb播放时增加开关 mute操作,解决切歌切歌时声音由小到大
2.增加ADC连接状态变量,ADC连接是不会自动关机
1 parent 7dd3326 commit 7d2045b

File tree

4 files changed

+37
-18
lines changed

4 files changed

+37
-18
lines changed

apps/player/PowerManager.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ namespace mango
8484
}
8585

8686
if(gPlayer.mPlayingView != NULL &&
87-
(gPlayer.mPlayingView->isUsmCon || gPlayer.mPlayingView->isMediaScanning)){
87+
(gPlayer.mPlayingView->isUsmCon || gPlayer.mPlayingView->isMediaScanning || gPlayer.mPlayingView->isUsbAudioConnect)){
8888
atuoPoweroffCount = 0;
8989
}
9090

apps/player/audiousb.cpp

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,18 @@
66
#include <cutils/sockets.h>
77
#include <poll.h>
88
#include <sys/un.h>
9+
910
#define LOG_TAG "AudioUSB"
11+
typedef void* (*PTHREAD_START_ROUTINE)(void*);
1012

1113
#if 1
1214
#define logi(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)
1315
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)
1416
#else
1517
#define logi(...)
1618
#endif
19+
void openOrCloseWm8740Mute(bool enable);
20+
void startCloseCodecMute();
1721
int gRun = 1;
1822
//volatile
1923
typedef struct tagRingBufferContext
@@ -459,7 +463,6 @@ void sendAudioMsg(int rate,int bit){
459463
return 0;
460464
}
461465

462-
463466
//ringBufferContext = (HifiRingBufferContext*)mRingBufferMemory;
464467
//ringBufferContext->mSize = HIFI_HIFI_BUFFER_SIZE;
465468

@@ -612,9 +615,9 @@ void writePcm(unsigned char* buf,int size){
612615

613616
gPacketType = packet->mType;
614617
memcpy(&gHiFiHeader, packet, sizeof(HIFI_PACKET_HEADER));
615-
618+
openOrCloseWm8740Mute(true);
616619
mHiFiOut = hifi_pcm_open(flags, gHiFiHeader.mChannels, gHiFiHeader.mSamplingRate, gHiFiHeader.mBitPerSample);
617-
620+
startCloseCodecMute();
618621
if (!hifi_pcm_ready(mHiFiOut))
619622
{
620623
// logn_e("can't open hifi device");
@@ -648,7 +651,31 @@ void writePcm(unsigned char* buf,int size){
648651

649652
return 0;
650653
}
651-
typedef void* (*PTHREAD_START_ROUTINE)(void*);
654+
void openOrCloseWm8740Mute(bool enable){
655+
int fd=0,state,volume;
656+
char* path = "/sys/class/codec/wm8740_mute";
657+
char rbuf;
658+
659+
log_i("openOrCloseMute enable=%d",enable);
660+
661+
fd = open(path,O_RDWR, 0);
662+
663+
rbuf = enable?1:0;
664+
665+
write(fd,&rbuf,1);
666+
667+
close(fd);
668+
}
669+
unsigned int CloseCodecMute(void *parameter)
670+
{
671+
usleep(1000 * 300);
672+
openOrCloseWm8740Mute(false);
673+
}
674+
void startCloseCodecMute(){
675+
pthread_t threadId;
676+
pthread_create(&threadId,NULL,(PTHREAD_START_ROUTINE)CloseCodecMute,NULL);
677+
}
678+
652679
int main (int argc, char* argv[])
653680
{
654681
int n = 10;
@@ -662,15 +689,11 @@ int main (int argc, char* argv[])
662689
//pthread_join(readThreadId,NULL);
663690

664691
pthread_create(&sendThreadId, NULL, (PTHREAD_START_ROUTINE)USBHiFiSending, (void*)(&n));
665-
//pthread_join(sendThreadId,NULL);
692+
pthread_join(sendThreadId,NULL);
666693

667694
//pthread_create(&sendThreadId, NULL, (PTHREAD_START_ROUTINE)USBConnectDetect, (void*)(&n));
668695

669696
LOGI("usbhifi init end-.");
670-
while(1){
671-
usleep(1000 * 1000);
672-
gReadingTouchCount++;
673-
}
674697

675698
return 0;
676699
}

apps/player/playingView.cpp

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ namespace mango
1515
mMSkBitmap = new MSkBitmap();
1616
isNeedFreshOld = 0;
1717
isUsmCon = 0;
18+
isUsbAudioConnect = 0;
1819
isMediaScanning = 0;
1920
isSdcardShare = 0;
2021
}
@@ -719,19 +720,13 @@ namespace mango
719720
}else if(code == USBHIFI_AUDIO_MSG){
720721
mPlayinglist->stopPlayer();
721722
Environment::openMute();
722-
gPlayer.openWm8740Mute();
723-
gPlayer.closeWm8740Mute();
724723
gPlayer.showUSBAudioConnectView();
725-
//if(gPlayer.mCodecType==1)
726-
// gPlayer.setHardwareVolume(200);
724+
isUsbAudioConnect = 1;
727725
}else if(code == USBHIFI_AUDIO_STOP){
728726
system("stop usbd");
729727
gPlayer.dismissView(gPlayer.mUSBAudioConnectView);
730728
system("start usbd");
731-
//if(gPlayer.mCodecType==1)
732-
// gPlayer.setHardwareVolume(255);
733-
734-
log_i("----------USBHIFI_AUDIO_STOP");
729+
isUsbAudioConnect = 0;
735730
}
736731
return 0;
737732
}

apps/player/playingView.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ class KeyCount{
144144
public:
145145
KeyCount mKeyCount;
146146
int isUsmCon;
147+
int isUsbAudioConnect;
147148
int isMediaScanning;
148149
int isSdcardShare;//这个变量用来判断,有sd卡存在时,flash share->mount 不去check playinglist,到sdcard share->mount时再check
149150
};

0 commit comments

Comments
 (0)