一種移動終端自動切換左右聲道的方法及移動終端的制作方法
【專利摘要】本發(fā)明公開一種移動終端自動切換左右聲道的方法及移動終端,所述方法包括步驟:預(yù)先注冊一音效服務(wù)組件并創(chuàng)建一通訊線程;通過通訊線程實時監(jiān)測移動終端旋轉(zhuǎn)的角度,并將監(jiān)測到的移動終端旋轉(zhuǎn)的角度數(shù)據(jù)實時傳輸?shù)剿鲆粜Х?wù)組件;所述音效服務(wù)組件根據(jù)所述移動終端旋轉(zhuǎn)的角度數(shù)據(jù)判斷是否切換左右聲道:當(dāng)移動終端的旋轉(zhuǎn)角度≤90°時,所述音效服務(wù)組件不切換左右聲道;當(dāng)移動終端的旋轉(zhuǎn)角度>90°時,所述音效服務(wù)組件切換左右聲道。通過本發(fā)明可實現(xiàn)實時對左右聲道進行切換以保證移動終端在任何擺放角度都不會出現(xiàn)聲場顛倒的情況,從而保證聲音的最佳視聽體驗。
【專利說明】
一種移動終端自動切換左右聲道的方法及移動終端
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及移動終端應(yīng)用領(lǐng)域,尤其涉及一種移動終端自動切換左右聲道的方法及移動終端。
【背景技術(shù)】
[0002]隨著社會發(fā)展越來越快,互聯(lián)網(wǎng)技術(shù)以及與電子技術(shù)的結(jié)合程度越來越高。手機以及便攜式裝置普及度越來越高,多媒體功能是消費電子設(shè)備用戶使用最多的一種應(yīng)用,怎樣提高用戶體驗,以及用戶感受成為了每個廠家都需要考慮的問題。音視頻是一個系統(tǒng)設(shè)計,很多廠家只限于在自己本產(chǎn)品的基礎(chǔ)上使用更加好的器件,花更高成本的配件進行提高聽賞感受,改善音質(zhì),然而提高音頻測試各種指標(biāo)都是后端設(shè)計非常復(fù)雜的系統(tǒng)工程。
[0003]目前業(yè)內(nèi)移動消費電子的工業(yè)設(shè)計越做越薄,對于喇叭器件的要求也是越來越高,超薄,小尺寸,小功率以及小音腔設(shè)計造成通過喇叭進行外放輸出的聲音質(zhì)量與正常音響以及耳機來比有著很大的弱勢,怎樣提高外放聲音的輸出質(zhì)量成為目前急需要解決的問題。尤其是現(xiàn)有的移動設(shè)備在擺放角度發(fā)生調(diào)整時無法自動切換左右聲道聲音的輸出,在這種情況下,往往使得在屏幕調(diào)整之后,手持電子設(shè)備左聲道的聲音從右邊的喇叭輸出,而右聲道的聲音從左邊的喇叭輸出,影響音質(zhì)的輸出效果。
[0004]因此,現(xiàn)有技術(shù)還有待于改進和發(fā)展。
【發(fā)明內(nèi)容】
[0005]鑒于上述現(xiàn)有技術(shù)的不足,本發(fā)明的目的在于提供一種移動終端自動切換左右聲道的方法及移動終端,旨在解決現(xiàn)有移動終端在擺放角度發(fā)生調(diào)整后無法通過自動切換左右聲道來實現(xiàn)立體聲輸出的問題。
[0006]本發(fā)明的技術(shù)方案如下:
一種移動終端自動切換左右聲道的方法,其中,包括步驟:
A、預(yù)先注冊一音效服務(wù)組件并創(chuàng)建一通訊線程;
B、通過通訊線程實時監(jiān)測移動終端旋轉(zhuǎn)的角度,并將監(jiān)測到的移動終端旋轉(zhuǎn)的角度數(shù)據(jù)實時傳輸?shù)剿鲆粜Х?wù)組件;
C、所述音效服務(wù)組件根據(jù)所述移動終端旋轉(zhuǎn)的角度數(shù)據(jù)判斷是否切換左右聲道:當(dāng)移動終端的旋轉(zhuǎn)角度<90°時,所述音效服務(wù)組件不切換左右聲道;當(dāng)移動終端的旋轉(zhuǎn)角度>90°時,所述音效服務(wù)組件切換左右聲道。
[0007]優(yōu)選地,所述移動終端自動切換左右聲道的方法,其中,所述步驟C具體包括:
當(dāng)移動終端的旋轉(zhuǎn)角度>90°時,通過反向混音算法將分別位于右聲道和左聲道的數(shù)據(jù)進行對調(diào),從而自動切換所述移動終端的左右聲道,實現(xiàn)立體聲的輸出。
[0008]優(yōu)選地,所述移動終端自動切換左右聲道的方法,其中,通過反向混音算法將位于右聲道的高16位數(shù)據(jù)和左聲道的低16位數(shù)據(jù)進行對調(diào)。
[0009]優(yōu)選地,所述移動終端自動切換左右聲道的方法,其中,所述步驟C之后還包括: 所述音效服務(wù)組件在切換左右聲道的同時,還對音效做相應(yīng)的變換和處理修飾。
[0010]優(yōu)選地,所述移動終端自動切換左右聲道的方法,其中,所述移動終端的頂端和底端分別設(shè)置有一喇叭。
[0011]—種移動終端,其中,包括:
預(yù)設(shè)模塊,用于預(yù)先注冊一音效服務(wù)組件并創(chuàng)建一通訊線程;
監(jiān)測傳輸模塊,用于通過通訊線程實時監(jiān)測移動終端旋轉(zhuǎn)的角度,并將監(jiān)測到的移動終端旋轉(zhuǎn)的角度數(shù)據(jù)實時傳輸?shù)剿鲆粜Х?wù)組件;
切換模塊,用于當(dāng)移動終端的旋轉(zhuǎn)角度<90°時,所述音效服務(wù)組件不切換左右聲道;當(dāng)移動終端的旋轉(zhuǎn)角度>90°時,所述音效服務(wù)組件切換左右聲道。
[0012]優(yōu)選地,所述移動終端,其中,所述切換模塊具體包括:
數(shù)據(jù)調(diào)換單元,用于當(dāng)移動終端的旋轉(zhuǎn)角度>90°時,通過反向混音算法將分別位于右聲道和左聲道的數(shù)據(jù)進行對調(diào);
切換單元,用于音效服務(wù)組件自動切換移動終端的左右聲道。
[0013]優(yōu)選地,所述移動終端,其中,還包括:
音效處理模塊,用于當(dāng)所述音效服務(wù)組件在切換左右聲道的同時,還對音效做相應(yīng)的變換和處理修飾。
[0014]有益效果:由于帶立體聲輸出的移動終端聲場最佳的時候就是左耳朵可以聽到左聲道聲音,右耳朵可以聽到右聲道的聲音,本發(fā)明根據(jù)移動終端的旋轉(zhuǎn)角度判斷是否進行左右聲道的切換,當(dāng)移動終端的旋轉(zhuǎn)角度符合進行左右聲道切換的條件時,通過軟件算法實時對左右聲道進行切換以保證移動終端在任何擺放角度都不會出現(xiàn)聲場顛倒的情況,從而保證聲音的最佳視聽體驗。
【附圖說明】
[0015]圖1為本發(fā)明一種移動終端自動切換左右聲道的方法較佳實施例的流程圖。
[0016]圖2為現(xiàn)有移動終端正常外放聲音的傳輸方式示意圖。
[0017]圖3為現(xiàn)有移動終端顛倒后外放聲音的傳輸方式示意圖。
[0018]圖4為本發(fā)明的移動終端較佳實施例的結(jié)構(gòu)框圖。
【具體實施方式】
[0019]本發(fā)明提供一種移動終端自動切換左右聲道的方法及移動終端,為使本發(fā)明的目的、技術(shù)方案及效果更加清楚、明確,以下對本發(fā)明進一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0020]請參閱圖1,圖1為本發(fā)明一種移動終端自動切換左右聲道的方法較佳實施例的流程圖,如圖所示,其包括步驟:
S100、預(yù)先注冊一音效服務(wù)組件并創(chuàng)建一通訊線程;
S110、通過通訊線程實時監(jiān)測移動終端旋轉(zhuǎn)的角度,并將監(jiān)測到的移動終端旋轉(zhuǎn)的角度數(shù)據(jù)實時傳輸?shù)剿鲆粜Х?wù)組件;
S120、所述音效服務(wù)組件根據(jù)所述移動終端旋轉(zhuǎn)的角度數(shù)據(jù)判斷是否切換左右聲道:當(dāng)移動終端的旋轉(zhuǎn)角度<90°時,所述音效服務(wù)組件不切換左右聲道;當(dāng)移動終端的旋轉(zhuǎn)角度>90°時,所述音效服務(wù)組件切換左右聲道。
[0021]在本發(fā)明實施例中,根據(jù)移動終端的旋轉(zhuǎn)角度來判斷是否進行左右聲道的切換,當(dāng)移動終端的旋轉(zhuǎn)角度符合進行左右聲道切換的條件時,通過軟件算法實時對左右聲道進行切換以保證移動終端在任何擺放角度都不會出現(xiàn)聲場顛倒的情況,從而保證聲音的最佳視聽體驗。
[0022]本發(fā)明在所述移動終端的頂端和底端分別設(shè)置有一喇叭,所述喇叭為微型一體化喇叭,其具有工業(yè)級標(biāo)準(zhǔn)性能,厚度小于4_,更容易適配結(jié)構(gòu)設(shè)計,并且所述喇叭結(jié)合復(fù)合膜的設(shè)計以及堆疊空間的設(shè)計,讓喇叭音腔保持最大化,保證喇叭能夠輸出最佳的聲音,擁有更低的失真。
[0023]本發(fā)明以手機為例,如圖2所示,在正常使用手機外放音樂的情況下,聲場最佳的時候就是用戶左耳聽到來自左喇叭的左聲道聲音,右耳聽到來自右喇叭的右聲道聲音;而當(dāng)手機顛倒過來的時候,即手機旋轉(zhuǎn)180°的時候,如果此時手機的左右聲道沒有發(fā)生切換,則用戶的聽音感覺就會變成如圖3所示,此時左聲道和右聲道的聲音產(chǎn)生的聲場會發(fā)生交替,從而影響用戶的聽感。通過本發(fā)明的方案可滿足用戶不管以什么樣的方式去擺放手機都能夠聽到自然高品質(zhì)的聲音,下面將具體描述本發(fā)明的實施方案:
在本發(fā)明步驟SlOO中,預(yù)先注冊一音效服務(wù)組件并創(chuàng)建一通訊線程,具體來說,本發(fā)明基于android系統(tǒng)平臺(當(dāng)然也可以是1s系統(tǒng)平臺或其它系統(tǒng)平臺)在移動終端注冊一(aud1 effect service , AE service)音效服務(wù)組件,同時創(chuàng)建一通訊線程與所述AEservice進行通訊連接,本發(fā)明為了便于所述AE service與新創(chuàng)建的通訊線程能夠更好的通訊,所述AE service由intentservice派生出來,而不是直接從service類進行派生,因為如果AE service直接從service類進行派生會默認(rèn)使用移動終端中的應(yīng)用的主線程,從而拉低應(yīng)用中所有運行的activity的性能;然而IntentService是Service類的子類,其主要用來處理異步請求。本發(fā)明通過在應(yīng)用的manifest文件中聲明所有的service做如下處理:〈applicat1n
android:allowBackup=〃true〃android:1con=〃@mipmap/icon〃android:label=〃@string/app_name〃android:persistent=〃true〃android:theme=〃@style/AppTheme〃 >
〈serviceandroid:name=^
com.aud1.Aud1effectservice.effectService〃android:enabled=〃true〃android:exported=〃true〃 >
<intent-filter>
〈act1n android:name=〃com.Aud1.Aud1effectservice.effectService 〃 />
</intent-filter>
</service)
〈receiver android:name=〃com.aud1.Aud1effectservice.effectService
BootReceiver,,
android: enabled=,, true,, android:exported=,,true,, >
〈intent-filter>
〈act1n android:name = "android.1ntent.act1n.BOOT_
COMPLETED" />
</intent-fiIter>
〈/receiver〉
〈provider
android:name=,,com.aud1.Aud1effectservice.Provider"android: authorities=,, com.aud1.Aud1ef feet service.Provider,,android: exported=,, true,,
android: permiss1n = ^ com.aud1.Aud1effectservice.Provider.PERMISS1N" >
〈/provider〉
〈/applicat1n〉
〈/manifest〉
然后再在public class aud1 effect Service extends aud1 Serviceimplements Rotat1n Detect1n.0n Rotat1n Detect1n Listener 類中的on Create函數(shù)中注冊listener,具體如下:public void on CreateO {
// m—Aud1 Manager = (Aud1Manager) get System Service (Context.AUD1_SERVICE);
super.0n CreateO ;
Set SmoothSet(new Hash SetO(Arrays.asList(mParameter Need To Be
Smooth)));
mRotat1nDetect1n = new Rotat1n Detect1n (get Applicat1n
ContextO)
通過上述函數(shù)處理主要是為了更加高效地使用ARM多核進程,在不影響平臺上AEservice的基礎(chǔ)上,可以通過manifest文件中聲明的service與系統(tǒng)平臺作為橋梁來傳遞數(shù)據(jù),其目的也是為了更好的避免當(dāng)此服務(wù)出現(xiàn)BUG的時候,會對系統(tǒng)原生態(tài)服務(wù)產(chǎn)生較大的修改,由于AE service本身就是消耗資源非常大的任務(wù)內(nèi)核,其負(fù)載要求很高,如果基于此任務(wù)上,再去做其他的動作也會出現(xiàn)一些不可預(yù)見的問題出來,如任務(wù)重啟,死鎖;然而作為獨立的service就會好很多,其也不會占用當(dāng)前AE service的CPU資源,即使該service出錯,也不會影響平臺AE service。通過上述函數(shù)可以實現(xiàn)在音效服務(wù)組件處理音效時有效避免阻塞主線程的應(yīng)用程序的運行。
[0024]在本發(fā)明所述步驟SllO中,通過通訊線程實時監(jiān)測移動終端旋轉(zhuǎn)的角度,并將監(jiān)測到的移動終端旋轉(zhuǎn)的角度數(shù)據(jù)實時傳輸?shù)剿鲆粜Х?wù)組件,具體地,本發(fā)明通過如下函數(shù)啟動通訊線程實時獲取手機旋轉(zhuǎn)的角度數(shù)據(jù):
Rotat1n Detect1n(Context context) {mContext = context;
Thread thread = new ThreadO {
?Override
public void run() {while (true) {
int rotat1n = ((Window Manager) mContext.get System Service(Context.WINDOff_SERVICE)).get Default DisplayO-get Rotat1nO;
MaxxLogger.Debug(^rotat1n = 〃 + rotat1n);if (mOnRotat1nDetect1nListener != null) {
mOnRotat1n Detect1n Listener.0nRotat1n Changed(rotat1n);//
當(dāng)通訊線程將監(jiān)測到的移動終端旋轉(zhuǎn)的角度數(shù)據(jù)實時傳輸?shù)剿鲆粜Х?wù)組件后,所述音效服務(wù)組件根據(jù)所述移動終端旋轉(zhuǎn)的角度數(shù)據(jù)判定是否切換左右聲道,當(dāng)移動終端的旋轉(zhuǎn)角度<90°時,所述音效服務(wù)組件不切換左右聲道;當(dāng)移動終端的旋轉(zhuǎn)角度>90°時,所述音效服務(wù)組件切換左右聲道,具體可通過如下函數(shù)實現(xiàn):
}
else if(mRotat1n > Surface.ROTAT1N—90)
{
EffectPresetSetParameter(ALG_TYPE, SWAP—LEFT—RIGHT, PARAMETER—IS—ACTIVE,outputMode, soundMode, TAG—LR—SWAP);//
此時,左右通道進行切換,聲效的配置也需要相應(yīng)的配置。
[0025]較佳地,本發(fā)明以手機旋轉(zhuǎn)180°為例,當(dāng)手機旋旋轉(zhuǎn)的角度數(shù)據(jù)為180°時,首先對左右聲道進行預(yù)處理,如下所示:
}
try {
Thread.sleep(lOOO);
} catch (InterruptedExcept1n e) {
//e.printStackTrace();
}
}
}
};
thread.start ();
}
然后在aud1effectservice類中繼續(xù)重載旋轉(zhuǎn)線程中具體需要進行的動作函數(shù),例如:
?Override
public void onRotat1nChanged(int rotat1n) {Logger.Debug(^rotat1n = 〃 + rotat1n);
if (rotat1n != mRotat1n && m_EffectMode.getOutputMode()==Defines.0UTPUTMODE_SPEAKER) {
setParameterForRotat1n(rotat1n,Defines.0UTPUTMODE_SPEAKER,Defines.MODE_ALL);
}
}
預(yù)處理完成后,此時音效服務(wù)組件即可對左右聲道進行切換,如下所示:private void setParameterForRotat1n(int rotat1n, int outputMode, intsoundMode) {
mRotat1n = rotat1n;
if (mRotat1n == Surface.R0TAT10N_180) {
EffectPresetSetParameter(ALG_TYPE, SffAP_LEFT_RIGHT,PARAMETER_IS_ACTIVE, outputMode, soundMode, TAG_UD_SWAP);//
較佳地,本發(fā)明所述音效服務(wù)組件在切換左右聲道的同時,還對音效做相應(yīng)的變換和處理修飾,如下函數(shù)所示:else {
EffectPresetSetParameter(ALG_TYPE, SffAP_LEFT_RIGHT, PARAMETER_IS_INACTIVE, outputMode, soundMode, TAG_UD_SWAP);
EffectPresetSetParameter(ALG_TYPE, SffAP_LEFT_RIGHT, PARAMETER_IS_INACTIVE, outputMode, soundMode, TAG_LR_SWAP);
}
}
在做任何左右聲道切換的時候,聲音信號是要通過音效算法進行聲場擴展,以及對一些低采樣的聲音信號進行聲音復(fù)原,將聲音信號一些頻段的信號重新建模出來,比如低頻段和中高頻段,通過這種處理可以讓聲音信號達(dá)到盡可能最優(yōu)的質(zhì)量。
[0026]所述EffectPresetSetParameter函數(shù)封裝在AEservice 庫中,首先對FrameBuffer數(shù)據(jù)進行左右通道調(diào)換的動作,其次進行數(shù)據(jù)音效相應(yīng)的變換和處理修飾,從而實現(xiàn)了當(dāng)進行變換手機正反的時候也能夠?qū)崟r的聽到正確的左右通道的聲音。
[0027]所述FrameBuffer數(shù)據(jù)是基于混音算法的基礎(chǔ)上,通過反向運算得出,下面本發(fā)明將以Android系統(tǒng)平臺為例計算得出FrameBuffer數(shù)據(jù):
首先Andro id的Mixer在Aud1Mixer.cpp這個文件里,它針對不同的情況,有各種執(zhí)行混音操作的函數(shù),本發(fā)明采用的這個函數(shù)是處理無需重采樣的立體聲音頻的,如下所示:voidAud1Mixer::process—genericNoResampling(state_t*state, int64_t pts)它的處理方式是把各個track的聲音數(shù)據(jù)相加,所謂聲音數(shù)據(jù),可以認(rèn)為是一個個的采樣點,Android默認(rèn)支持的采樣精度是16bit的,格式為signedPCM,所以每個采樣點用有符號的16位數(shù)in116_t表示。如果直接加16bi t的數(shù)據(jù),肯定會造成16bi t的值溢出,Android的做法是強轉(zhuǎn)成int32_t,相加,并把和賦值給了 32bit的數(shù),并且相加前乘上了音量,而表達(dá)音量的數(shù)據(jù)類型也是int32_t。這樣,就能保證在這個過程中是不會溢出的。
[0028]voidAud1Mixer::track——16BitsStereo(track_t* t,int32_t* out, size_tframeCount,int32_t* temp —unused, int32_t* aux){
int32_t VI =t->prevVolume[0];nt32_t vr =t->prevVolume[l];
const intl6_t*in = static—cast〈const intl6_t *>(t->in);
*out++ += (vl>> 16) * (int32_t) *in++;
*out++ += (vr>> 16) * (int32_t) *in++;
}
通過上述函數(shù)處理,混音后的數(shù)據(jù)已經(jīng)存在out指向的buffer里了,然后再調(diào)用convertMixerFormat(out, tl.mMixerFormat,outTemp, tl.mMixerlnFormat, BLOCKSIZE* tl.mMixerChanneICount);其中有函數(shù)ditherAndClamp,這個是把int32—t格式的源數(shù)據(jù)sums消減成intl6—t,并把左右聲道一起放入int32—t格式的out中。
[0029]void ditherAndClamp(int32_t* out, constint32_t *sums, size_t c)
{size—t i;
for (i=0 ; i〈c ; i++) {int32_t I = *sums++;int32_t r = *sums++;int32_t nl = I >> 12;int32_t nr = r >> 12;
I = clampl6(nl);r = clampl6(nr);
*out++ = (r<<16) I (I & OxFFFF);
}
}
一個聲道的32bit的輸入,先右移12位,也就是保留前20位,然后clampl6(clamp是“夾”的意思)成16位,此時左右聲道都是16位的了。然后再把右聲道放高位,左聲道放低位這么組成一個32bit的數(shù)。
[0030]其中clampl6的作用是:
static inline intl6_t clampl6(int32_tsample)
{
if ((sample>>15) " (sample>>31)) sample = 0x7FFF " (sample>>31); return sample;
}
本發(fā)明基于Android平臺的混音算法的基礎(chǔ)上,通過進行反向運算得出可以實時的得到需要待處理的FrameBuffer數(shù)據(jù),所述反向運算的實現(xiàn)過程如下:
void reserve0utput(int32_t* out,constin32_t *sums, size_t c)
{
size_t i; for(i=0; i〈c; i++)
{
int32_t I = *sums++; int32_t r = *sums++
int32_t nl = I >> 12;int32_t nr = r >> 12;
I = clampl6(nl);r = clampl6(nr);
*out++ =(1 <<16)I(r&OxFFFF);
}
}
SP32bit數(shù)據(jù)高16位與低16位數(shù)據(jù)進行對調(diào),原來高16位的右聲道數(shù)據(jù)放置到低16位中,低16位的左聲道數(shù)據(jù)放置到高16位中,正好跟void ditherAndClamp(int32_t* out,constint32_t *sums, size_t c)相反。
[0031]本發(fā)明通過平臺bind機制實現(xiàn)線程與音效服務(wù)組件之間的通訊將手機是否進行旋轉(zhuǎn)的數(shù)據(jù)實時的回調(diào)到set On Rotat1n Change Listener函數(shù)中,用此結(jié)果判斷在進行音效處理的時候,是否還需要調(diào)用左右通道數(shù)據(jù)調(diào)換的算法來處理。也就是說,本發(fā)明當(dāng)移動終端的旋轉(zhuǎn)角度符合進行左右聲道切換的條件時,即移動終端的旋轉(zhuǎn)角度>90°時,可通過反向混音算法將分別位于右聲道和左聲道的高16位數(shù)據(jù)與低16位數(shù)據(jù)進行對調(diào),從而自動切換所述移動終端的左右聲道,實現(xiàn)立體聲的輸出;當(dāng)移動終端的旋轉(zhuǎn)角度<90°時,所述音效服務(wù)組件不切換左右聲道。
[0032 ]基于上述方法,本發(fā)明還提供一種移動終端,如圖4所示,其包括:
預(yù)設(shè)模塊100,用于預(yù)先注冊一音效服務(wù)組件并創(chuàng)建一通訊線程;
監(jiān)測傳輸模塊110,用于通過通訊線程實時監(jiān)測移動終端旋轉(zhuǎn)的角度,并將監(jiān)測到的移動終端旋轉(zhuǎn)的角度數(shù)據(jù)實時傳輸?shù)剿鲆粜Х?wù)組件;
切換模塊120,用于當(dāng)移動終端的旋轉(zhuǎn)角度<90°時,所述音效服務(wù)組件不切換左右聲道;當(dāng)移動終端的旋轉(zhuǎn)角度>90°時,所述音效服務(wù)組件切換左右聲道。
[0033]所述的移動終端,其中,所述切換模塊120具體包括:
數(shù)據(jù)調(diào)換單元121,用于當(dāng)移動終端的旋轉(zhuǎn)角度>90°時,通過反向混音算法將分別位于右聲道和左聲道的數(shù)據(jù)進行對調(diào);
切換單元122,用于音效服務(wù)組件自動切換移動終端的左右聲道。
[0034]進一步,所述移動終端,其還包括:
音效處理模塊,用于當(dāng)所述音效服務(wù)組件在切換左右聲道的同時,還對音效做相應(yīng)的變換和處理修飾。
[0035]綜上所述,由于帶立體聲輸出的移動終端聲場最佳的時候就是左耳朵可以聽到左聲道聲音,右耳朵可以聽到右聲道的聲音,本發(fā)明根據(jù)移動終端的旋轉(zhuǎn)角度判斷是否進行左右聲道的切換,當(dāng)移動終端的旋轉(zhuǎn)角度符合進行左右聲道切換的條件時,通過軟件算法實時對左右聲道進行切換以保證移動終端在任何擺放角度都不會出現(xiàn)聲場顛倒的情況,從而保證聲音的最佳視聽體驗。
[0036]應(yīng)當(dāng)理解的是,本發(fā)明的應(yīng)用不限于上述的舉例,對本領(lǐng)域普通技術(shù)人員來說,可以根據(jù)上述說明加以改進或變換,所有這些改進和變換都應(yīng)屬于本發(fā)明所附權(quán)利要求的保護范圍。
【主權(quán)項】
1.一種移動終端自動切換左右聲道的方法,其特征在于,包括步驟: A、預(yù)先注冊一音效服務(wù)組件并創(chuàng)建一通訊線程; B、通過通訊線程實時監(jiān)測移動終端旋轉(zhuǎn)的角度,并將監(jiān)測到的移動終端旋轉(zhuǎn)的角度數(shù)據(jù)實時傳輸?shù)剿鲆粜Х?wù)組件; C、所述音效服務(wù)組件根據(jù)所述移動終端旋轉(zhuǎn)的角度數(shù)據(jù)判斷是否切換左右聲道:當(dāng)移動終端的旋轉(zhuǎn)角度<90°時,所述音效服務(wù)組件不切換左右聲道;當(dāng)移動終端的旋轉(zhuǎn)角度>90°時,所述音效服務(wù)組件切換左右聲道。2.根據(jù)權(quán)利要求1所述移動終端自動切換左右聲道的方法,其特征在于,所述步驟C具體包括: 當(dāng)移動終端的旋轉(zhuǎn)角度>90°時,通過反向混音算法將分別位于右聲道和左聲道的數(shù)據(jù)進行對調(diào),從而自動切換所述移動終端的左右聲道,實現(xiàn)立體聲的輸出。3.根據(jù)權(quán)利要求2所述移動終端自動切換左右聲道的方法,其特征在于,通過反向混音算法將位于右聲道的高16位數(shù)據(jù)和左聲道的低16位數(shù)據(jù)進行對調(diào)。4.根據(jù)權(quán)利要求1所述移動終端自動切換左右聲道的方法,其特征在于,所述步驟C之后還包括: 所述音效服務(wù)組件在切換左右聲道的同時,還對音效做相應(yīng)的變換和處理修飾。5.根據(jù)權(quán)利要求1所述移動終端自動切換左右聲道的方法,其特征在于,所述移動終端的頂端和底端分別設(shè)置有一喇叭。6.一種移動終端,其特征在于,包括: 預(yù)設(shè)模塊,用于預(yù)先注冊一音效服務(wù)組件并創(chuàng)建一通訊線程; 監(jiān)測傳輸模塊,用于通過通訊線程實時監(jiān)測移動終端旋轉(zhuǎn)的角度,并將監(jiān)測到的移動終端旋轉(zhuǎn)的角度數(shù)據(jù)實時傳輸?shù)剿鲆粜Х?wù)組件; 切換模塊,用于當(dāng)移動終端的旋轉(zhuǎn)角度<90°時,所述音效服務(wù)組件不切換左右聲道;當(dāng)移動終端的旋轉(zhuǎn)角度>90°時,所述音效服務(wù)組件切換左右聲道。7.根據(jù)權(quán)利要求6所述的移動終端,其特征在于,所述切換模塊具體包括: 數(shù)據(jù)調(diào)換單元,用于當(dāng)移動終端的旋轉(zhuǎn)角度>90°時,通過反向混音算法將分別位于右聲道和左聲道的數(shù)據(jù)進行對調(diào); 切換單元,用于音效服務(wù)組件自動切換移動終端的左右聲道。8.根據(jù)權(quán)利要求6所述的移動終端,其特征在于,還包括: 音效處理模塊,用于當(dāng)所述音效服務(wù)組件在切換左右聲道的同時,還對音效做相應(yīng)的變換和處理修飾。
【文檔編號】H04S7/00GK106028254SQ201610291972
【公開日】2016年10月12日
【申請日】2016年5月5日
【發(fā)明人】陳瓊
【申請人】惠州Tcl移動通信有限公司