为啥一下耳机只有高通9008模式驱动下载

高通芯片的手机配得上什么耳机?_显卡吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:2,113,482贴子:
高通芯片的手机配得上什么耳机?收藏
宜家上海网上商城上线了!超过7000个单品,家装更惬意!
10元大逼侧
基佬莫开玩笑
XPLAY也是高通的…
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或高通的手机简直不能听歌……_耳机吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:1,131,611贴子:
高通的手机简直不能听歌……收藏
原来用百多块的耳机 没发现 跟iPhone对比 感觉安卓的还好些(因为能调EQ) 自从换了耳机后 安卓机的低噪问题就算了嘛 那齿音真是无法忍受。。受不鸟了……
宜家上海网上商城上线了!超过7000个单品,家装更惬意!
安卓是高通?高通是安卓?
咣当的永远是半瓶水,麻烦至少把楼上的问题闹明白再来下定义。
安卓也不全是高通的,不过高通听歌是真坑
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或新买的播放器(高通820)_耳机吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:1,131,611贴子:
新买的播放器(高通820)收藏
本来想买个步步高xplay5的……奈何cpu太渣果断放弃……
宜家上海网上商城上线了!超过7000个单品,家装更惬意!
安卓手机大同小异,反正该有的功能都有,主要奔着1000元播放器的音质买的
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或2169人阅读
android(14)
Bp部分主要是注册中断事件,检测到中断后上报key_code给ap,通过rpc机制传递给ap端。
Ap部分驱动层注册rpc客户端,对事件进行处理,uevent上报相应的事件类型,应用层开机启动wiredaccessoryobserver服务,侦听到耳机事件后发送setdeviceconnectionstate到策略层,选择输出设备,驱动层根据设备切换到对应的音频通路,音频通路再通过acdb文件调用bp对应的通路的codec和snd,完成了通路的切换。
/*===========================bp部分=====================================*/
耳机检测分析,插入耳机检测通过中断机制判断的,
1.系统启动时mp侧先调用hsi_gpio_init函数中 hsi_gpio_process_isr_event(0,
(timer_cb_data_type)gpio_id) 处理gpio_id中断事件。
在hsi_gpio_process_isr_event函数中设置中断&
/* Set interrupt to fire when GPIO flips again */
Gpio状态翻转时设置中断激活
& hs_tramp_gpio_register_isr((uint32)gpio_data-&gpio_num, trigger,
&&&&&&&&&&&&&&&&&&&&& hsi_gpio_detect_isr, (uint32)gpio_id);
2.gpio正常情况下不会发生变化,插入耳机后将会因电平变化有中断产生,因此开机后从his_gpio_detect_isr开始执行
void hsi_gpio_detect_isr(uint32 gpio_id)
& boolean is_intrpt_
& hsi_gpio_data_type *gpio_
& gpio_data = (hsi_gpio_data + gpio_id);
& /* Read the GPIO. If it is low set the interrupt to be level trigerred for
&& * high level. If it is high, set the interrupt for level trigerred for low
&& * level.
&& * Active value for the GPIO is determined from configuration data
& if (gpio_id & HS_GPIO_LAST)
&&& is_intrpt_enabled = hs_tramp_gpio_is_interrupt_enabled(gpio_data-&gpio_num);
&&& if (TRUE == is_intrpt_enabled)
&&&&& hs_tramp_gpio_deregister_isr((uint32)gpio_data-&gpio_num,
&&&&&&&&&&&&&&&&&&&&&&&&&&& hsi_gpio_detect_isr);
&&& if(INVALID_GPIO_DEBOUNCE_PERIOD != gpio_data-&timer_delay& &&
&&&&&& TRUE == gpio_data-&timer_initialzed)
&&& HS_MSG_HIGH(&if xx%s: hs_report_event %d&, __FUNCTION__, gpio_id, 0);
&&&&& /* Start the timer to debounce GPIO level change on GPIO */
/*设置定时器,消除GPIO电平变化的抖动*/
&&&&& timer_reg( &(gpio_data-&gpio_timer),
&&&&&&&&&&&&&&&& (timer_t2_cb_type)hsi_gpio_process_isr_event,
&&&&&&&&&&&&&&&& (timer_cb_data_type)gpio_id, gpio_data-&timer_delay, 0
&&&&&&&&&&&&&& );
关于1调用情况分析结构体:
hs_poll_src_type
hsi_gpio_handle =
& hsi_gpio_init,
& hsi_gpio_poll,
& hsi_gpio_close,
hs_poll_table_type hsi_poll_list[HS_EVNT_LAST] =
& {NULL,&&&&&&&&&&&&&&& HS_GPIO_EXT_PWR, 0},&&& /* External Power */
& {NULL,&&& &&&&&&&&&&&&&&&&&&& HS_GPIO_HSD,&&& &0},&&& /* Headset&&&&&&& */
& {NULL,&&&&&&&&&&&&&&& HS_GPIO_HSTD,&&& 0},&&& /* Headset Type&& */
& {NULL,&&&&&&&&&&&&&&& HS_GPIO_NONE,&&& 0},&&& /* Headset Switch */
& {NULL,&&&&&&&&&&&&&&& HS_GPIO_NONE,&&& 0},&&& /* Keypad&&&&&&&& */
& {&hsi_pwr_key_handle, HS_GPIO_NONE,&&& 0},&&& /* PWR/END&&&&&&& */
& {NULL,&&&&&&&&&&&&&&& HS_GPIO_FLIP,&&& 0},&&& /* Flip state&&&& */
& {NULL,&&&&&&&&&&&&&&& HS_GPIO_CHARGER, 0},&&& /* Charger&&&&&&& */
& {NULL,&&&&&&&&&&&&&&& HS_GPIO_NONE,&&& 0},&&& /* Runtime env&&& */
& {NULL,&&&&&&&&&&&&&&& HS_GPIO_NONE,&&& 0},&&& /* Remote evts&&& */
& {NULL,&&&&&&&&&&&&&&& HS_GPIO_NONE,&&& 0},&&& /* Diag events&&& */
& {&hsi_gpio_handle,&&& HS_GPIO_NONE,&&&& 0},&&& /* Accessory evts */
& {NULL,&&&&&&&&&&&&&&& HS_GPIO_NONE,&&& 0},&&& /* headphone evts */
& {NULL,&&&&&&&&&&&&&&& HS_GPIO_NONE,&&& 0},&&& /* mic detect evts*/
& {&hsi_acc_type_drv_handle,&&&&&&&&&& HS_GPIO_ACCESSORY,&&& 0},&&& /* acc type detect evts*/
上述结构体表明
hsi_poll_list[HS_EVNT_ACCESSORY_DETECT].handle触发hsi_gpio_handle,检测插入中断事件
hsi_poll_list[HS_EVNT_ACC_TYPE_DETECT].handle触发hsi_acc_type_drv_handle,区分耳机
void hs_task& -》
static void hs_init( void )& -》
& &&&&&&&&&&&&&&&&&hsi_init_plugins();
hsi_init_plugins()函数中
& for (i = (hs_event_type)0; i & HS_EVNT_LAST; ++i)
&&& HSI_EVNT_DRIVER(i) = (hs_poll_src_type *)NULL;
&&& HSI_EVNT_POLL_STATUS(i) = HS_POLL_SRC_INACTIVE;
&&& HSI_EVNT_LAST_STATE(i) = HS_SRC_STATE_UNKWN;
&&& if (NULL != hsi_poll_list[i].handle)
&&&&& if (NULL != hsi_poll_list[i].handle-&init)
result = (hsi_poll_list[i].handle-&init)(&hsi_cfg_data, (void *)NULL);
&&&&& if ((HS_SUCCESS == result) && (NULL != hsi_poll_list[i].handle-&poll))
&&&&&&& HSI_EVNT_DRIVER(i) = hsi_poll_list[i].
&&&&&&& /* Check if the poll source uses interrupts. If it does set it up as
&&&&&&&& * ACTIVE_INTERRUPT so that it does not get polled.
&&&&&&&& */
&&&&&&&& HS_MSG_HIGH(&%s: i=%d if(0==%d)&, __FUNCTION__, i, hsi_poll_list[i].poll_interval);
&&&&&&& if (0 == hsi_poll_list[i].poll_interval)
&&&&&&&&& HSI_EVNT_POLL_STATUS(i) = HS_POLL_SRC_ACTIVE_INTERRUPT;
&&&&&&& else
&&&&&&&&& HSI_EVNT_POLL_STATUS(i) = HS_POLL_SRC_ACTIVE;
&&&&&&&&& ++hsi_poll_plugins_
&&&&& HSI_EVNT_DRIVER(i) = (hs_poll_src_type *)NULL;
&&&&& HSI_EVNT_POLL_STATUS(i) = HS_POLL_SRC_INACTIVE;
&&& hsi_poll_data[i].gpio = hsi_poll_list[i].gpio_
&&& hsi_set_poll_data_skip_cnt(i);
根据& @file hs_bsp_v.c设置结构体情况设置hsi_poll_list[i].handle,如果poll_interval为0的时候,就将poll状态设为中断,i为11时result
= (hsi_poll_list[i].handle-&init)(&hsi_cfg_data, (void *)NULL);会调用hsi_gpio_init函数
hs_return_type hsi_gpio_init(const hs_config_data_type *cfg, void *handle)
/*===========================ap部分=====================================*/
耳机驱动文件
1.Rpc_server_handset.c
从probe文件看看该文件的作用,定义了全局的变量
struct msm_handset {
&&&&&&&& struct input_dev *
&&&&&&&& struct switch_开关设备
&&&&&&&& struct msm_handset_platform_data *hs_
&&&&&&&& bool mic_on, hs_
static struct msm_rpc_client *rpc_通过rpc机制获取bp事件
static struct msm_handset *
1.1注册开关设备
&&&&&&&& hs-&sdev.name&&&&&&&& = &h2w&;
&&&&&&&& hs-&sdev.print_name = msm_headset_print_
&&&&&&&& rc = switch_dev_register(&hs-&sdev);
通过switch_dev_register就会生成目录:/sys/class/switch/h2w
及其下面的&/sys/class/switch/h2w/name&;和&/sys/class/switch/h2w/state&;文件。对了,接口就是这两个文件
由驱动通过update_stateà switch_set_state将rpc获取的耳机名称和状态,写入name和state
应用程序对耳机进行名称和状态的判断就靠读出这两个文件得到。
1.2注册input设备,
ipdev = input_allocate_device();
input_set_drvdata(ipdev, hs);
hs-&ipdev =
if (pdev-&dev.platform_data)
&&&&&&&&&&&&&&&&&& hs-&hs_pdata = pdev-&dev.platform_
&&&&&&&& ipdev-&id.vendor&&&&& = 0x0001;
&&&&&&&& ipdev-&id.product&&& = 1;
&&&&&&&& ipdev-&id.version&&&&& = 1;
&&&&&&&& input_set_capability(ipdev, EV_KEY, KEY_MEDIA);
&&&&&&&& input_set_capability(ipdev, EV_KEY, KEY_VOLUMEUP);
&&&&&&&& input_set_capability(ipdev, EV_KEY, KEY_VOLUMEDOWN);
&&&&&&&& input_set_capability(ipdev, EV_SW, SW_HEADPHONE_INSERT);
&&&&&&&& input_set_capability(ipdev, EV_SW, SW_MICROPHONE_INSERT);
&&&&&&&& input_set_capability(ipdev, EV_KEY, KEY_POWER);
&&&&&&&& input_set_capability(ipdev, EV_KEY, KEY_END);
&&&&&&&& set_bit(INPUT_PROP_NO_FAKE_RELEASE, ipdev-&propbit);
&&&&&&&& rc = input_register_device(ipdev);
1.3 初始化rpc客户端,接收bp上报的事件
&&&&&&&& rc = hs_rpc_init();
à rc = msm_rpc_create_server(&hs_rpc_server);
à static struct msm_rpc_server hs_rpc_server = {
&&&&&&&& .prog&&&&&&&&&&&&&&&&& = HS_SERVER_PROG,
&&&&&&&& .vers&&&&&&&&&&&&&&&&&& = HS_SERVER_VERS,
&&&&&&&& .rpc_call&& = handle_hs_rpc_call,
à &&&&&&&&&&& report_hs_key(args-&key_code, args-&key_parm);
1.4 report_hs_key函数上报key事件
//根据key_code是松开(0xff)还是其他确定hs_find_key()的参数是param还是code
&&&&&&&& if (key_code == HS_REL_K)
&&&&&&&&&&&&&&&&&& key = hs_find_key(key_parm);
&&&&&&&& else
&&&&&&&&&&&&&&&&&& key = hs_find_key(key_code);
static int hs_find_key(uint32_t hscode)
&&&&&&&& int i,
//hscode保存在高8位,0保存在低24位
&&&&&&&& key = KEY(hscode, 0);
//循环查hs_key_map,这个数组最后一个元素定义为0
&&&&&&&& for (i = 0; hs_key_map[i] != 0; i++) {
//高8位为当前key值的,取出其相应的低24位返回函数
&&&&&&&&&&&&&&&&&& if ((hs_key_map[i] & 0xff000000) == key)
&&&&&&&&&&&&&&&&&&&&&&&&&&& return hs_key_map[i] & 0x00
&&&&&&&& }
&&&&&&&& return -1;
Input_report_key
Input_report_switch
根据上报key事件和开关事件进行不同处理
这里有无mic的事件做了区分,update时会将h2w/state更新,但是input时没有区分出来。
2,应用层获取耳机状态文件WiredAccessoryObserver.java
-&updatestate
& -&update
&&& -&handlemessage
&&&&& -&setdevicesState
&&&&&&& -&setdevicestate
Audiomanager.java
publicvoidsetWiredDeviceConnectionState(int
device,int state, String name)
Audioservice.java
setDeviceconnectionState对应audiopolicymanager.cpp中的函数(JNI机制)
调用HAL层中的设备可以实现驱动通路的切换。
下面对应用分析比较透彻,对上层UI通过发送消息通知变更外设图标
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:129209次
积分:1709
积分:1709
排名:第18197名
原创:36篇
转载:19篇
评论:15条
(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(1)(1)(3)(2)(1)(4)(2)(7)(7)(1)(2)(1)(3)(3)(1)(1)(1)(1)内容字号:
段落设置:
字体设置:
精准搜索请尝试:
为啥手机厂商一窝蜂地烧Hi-Fi,做耳机?
来源:作者:佚名责编:悠悠
自从2007年苹果推出第一代iPhone,智能手机已经取得了突飞猛进的发展。它们的屏幕越来越大,也越来越清晰,拍照和摄像能力甚至强于不少同时间上架销售的同价位数码相机,甚至,还有的厂商宣称他们制造的手机性能比Xbox家用游戏机还要强……2014年已经过去,消费者开始发现,在飚屏幕尺寸、处理器频率和相机分辨率之余,手机厂商们开始花费更多的时间,重点宣传自家手机的音质有多么好:Hi-Fi级、“Retina Sound”等热词(buzzword)不断涌现……以前说手机有多好,看能不能拍月亮、在安兔兔跑出3万、4万的分数;现在呢?他们想要告诉你:好手机,恨不得要能两个耳机里听清交响乐团里每一种乐器的声音……除此之外,厂商也纷纷推出配套的Hi-Fi耳机,有的手机厂商还找到了专业的耳机品牌进行捆绑销售和合作;情况还不仅如此――如果你花时间浏览国内各家比较有名气的厂商的官方网站,进入它们的自营电商,会发现这些在线商店大多有许多种第三方品牌的耳机、蓝牙音箱,甚至智能可穿戴等类型的产品上架销售。这是一个很有趣的现象。大多数人都还记得,不久前(大约几年前)消费者购买手机的时候通常包装里还有配套耳机附送――到现在,这么干的品牌可能只剩下苹果、三星和vivo了。不过,苹果过去依靠iPod的流行和数字音乐下载生态积累了大量拥趸,音质好坏对于苹果消费者购买其、iPod产品没有多大影响。而对比来看,国产手机厂商都在宣传高音质、昂贵的解码芯片和运放,甚至和移动运营商、音频流媒体服务合作推出音乐畅听流量包,但这些厂商却没有一个在手机的包装内附赠一条哪怕路边摊价格只有10块钱的耳机。想要聆听所推崇的高音质?对不起,您还得从抽屉里把几年前的耳机翻出来,或者单独购置中高档耳机――什么?这些您都不愿意?那正好,在我们的网站上买一条呗,做工精美,好听不贵!为什么手机都开始上Hi-Fi了?为什么手机厂商都在推出自己的耳机?为什么上了Hi-Fi,却“一条耳机都不给我”?音质成为了新的差异化/飙配置方向国内智能手机行业,飙高配置是亘古不变的话题。你上4核,我上8核,你屏幕1080p,我搞2K,你相机2000万像素,我上光学防抖……配置竞赛就像上个世纪冷战时期的军备竞赛一样,甭管用户是不是真的需要,飙就是了。但是,厂商对于更高配置的需求增长,超过了供应链元器件提供方的升级换代速度。这就像是两条一起增长但斜率不同的曲线,前者的斜率要比后者的高。为什么这么说?看看现在小米就知道了:高通骁龙810距离大规模生产还有时日,顶配版小米Note要到三月底才能面世,但小米早在1月中旬就把这个版本先发布了;那么,这种情况又是如何产生的呢?答案更简单了:统治暗黑手机行业的三大定律,第一条就是摩尔定律(另外两条不再赘述。屏幕上不了4K,处理器也多不过8核,该飙点什么好呢?回想一下,用户用智能手机都干嘛?打电话聊微信拍照片听音乐……对了!听音乐!于是乎,最先开始做高音质的厂商找到了新的差异化灵感,而随后跟上的厂商则发现了新的飙参数方向。厂商们纷纷开始在手机中加入更强大的解码芯片、运放单元,在软件当中进行优化,推出自己或合作伙伴定制的耳机……过去,消费者购买手机最直观的感受就是屏幕大不大、分辨率高不高。而手机运行起软件来够不够快,玩得够不够爽,这都是需要时间和亲自上手感受的,属于靠后一层的体验――音质,就更靠后了。在Hi-Fi上,在耳机上做功夫,说白了都是为了一个差异化的道理:我家的手机更关注用户的全方位体验,除了消费者的眼睛享受之外,耳朵也要享受,来买吧。音频内容消费将趋向主流,Hi-Fi手机有市场“大家都开始在音频上下功夫,我觉得有一句话可以很简单解释这个现象,那就是:眼睛承载的太多了,该耳朵分担一些了。”一名就职于国内知名音频厂商的人士对PingWest品玩记者如是说,“你不觉得苹果在里面,把Podcast变成预装的应用,是别有用意的吗?”也就是说,随着人民生活水平的提高,用户在手机上消费音频内容的需求,将上升到和其他视频、游戏内容一样的高度。所以,智能手机厂商在Hi-Fi音质、耳机上做文章,也正巧迎合了音频内容消费,特别是音乐消费需求的增长。数字音乐行业正在从数字音乐下载时代走向流媒体时代,而随着移动网络技术的提高,流媒体音乐的码率(可以被简单理解为音质的清晰度)也越来越高:国外Spotify、SoundCloud等公司均提供较高码率的音乐,而一家名为Tidal的公司也号称是第一家提供码率高达1411kbpsFLAC、ALAC格式音乐的流媒体服务商。国内来看,老牌MP3厂商魅族也趁着自己在音频界的形象还没消失殆尽之前,推出了Hi-Fi手机MX4 Pro,搭配了自家音乐会员服务,提供码率达到780kbps无损音乐。可以说,数字音频内容的市场已经得到了充分发展,而对于希望享受内容的人来说,工欲善其事,必先利其器,购买一部Hi-Fi手机,配上一条不错的耳机也是必然的事情了。越来越不赚钱的手机和暴利的耳机配件“卖手机”,赚钱吗?答案是肯定的――其实这是一句废话,不赚钱还卖它干嘛?可是,卖“手机”,真的赚钱吗?对于国产手机厂商来说,真的不怎么赚。国产智能手机可以和国外竞品在硬件配置相同或更高的情况下,卖到更低的价格。显而易见的原因在于:1)国产厂商大多采用“互联网手机”的模式,先发布再发货,依靠互联网进行营销推广,极大的降低手机生产之后的一切行销成本;2)“互联网手机”模式的创造者小米已经成为了价格屠夫,其他厂商不追随其低价的路线的话,存活的机会更渺茫……根据PingWest品玩了解到的情况,国产品牌的智能手机,毛利率通常只有3%到5%,在互联网销售模式和规模化的作用下,勉强可以做到卖的越多,开销不随之增长太多,但绝对算不上“赚钱”。为什么雷军说手机不赚钱,要用互联网服务会员费赚钱,原因也在这里。耳机等音频产品,和智能手机则完全是两个故事。就拿耳机来说,是数码产品当中毋庸置疑的暴利品类。根据水木清华研究中心发布的《年全球及中国耳机行业研究报告》,2014年全球耳机市场将达3.06亿部,整个市场盘子有大约66亿美元。全球耳机的出产地当中95%集中在中国大陆,众多代工提供商和中国市场相对低廉的劳动力价格意味着耳机行业的毛利率极高。根据该报告,品牌耳机的毛利率都在50%左右。像马路边的假冒伪劣面条耳机,平均价格不超过2美元,而高档的入耳或头戴式耳机价格可达数百甚至数千美元。国产手机品牌的自产耳机虽然从宣传物料上看非常精致、做工高度精美,但99、129、199元人民币的定价决定了它的成本真的高不到哪儿去。先不说国产耳机,Beats可能就是最好的例子:这家成立于2008年的音乐公司,用了不到10年的时间就打败了所有老牌耳机厂家成为全球第一,2014年耳机和音箱产品营收超过10亿美元,远高于榜眼缤特力和探花森海塞尔。Beats的耳机是最好的耳机吗?对耳机略知一二的人都明白不是;可是,Beats是最优秀的耳机品牌吗?真的是,因为他们的毛利率远高于业界平均水平。然而,行销开支极大,渠道成本高,导致了耳机单品有利润,但行业整体来讲营业利润比较低。对于本文讨论的主角手机厂商来说,寻求OEM生产并贴牌耳机的运作方式,依托互联网手机的销售模式来说,抱上大腿的手机厂商自产耳机的行销开支成本并不高,即使不追求耳机品牌那样高达50%的毛利率,有个20%到40%也是相当不错的;给第三方品牌耳机提供渠道销售就更别提了,这些都是在不赚钱的手机业务上提高毛利率的方法。国内耳机行业的OEM现状,和耳机的高毛利率,为手机厂商自研(其实说不上自研,也就算自产吧)耳机提供了得天独厚的环境。有了耳机,手机里的那一水既耗电又增加重量的元器件才有了意义。小米活塞、一加银耳/JBL、魅族EP-21等等……这些耳机的存在,和对手机音频配置的提高相辅相成,手机的高音质为耳机导入了销量,而耳机反过来又为品牌提供了利润。你需要这样的Hi-Fi手机和Hi-Fi耳机吗?其实这是个不叫问题的问题。因为未来,在中高档的价格区间里你可能越来越难买到没有高音质、Hi-Fi音效的手机了,不管你需要不需要,厂商只提供有Hi-Fi功能的手机;同时,耳机的价格越来越便宜,做工(在好不到哪儿去的前提下)越来越好,购买Hi-Fi手机和Hi-Fi耳机其实已经成为经济之选。这是因为,如果你喜欢听高清音乐,需要在室外移动的场景下听音乐,这样的手机省去了你单独购置高清音频播放器的苦恼――在这个品类中,国产播放器的做工和系统都很一般,外国品牌比如索尼的价格又过分昂贵,一点也不经济。最后,我们有个小问题:音质之后,手机厂商将要追捧的下一项配置会是什么……你怎么看?更正:本文的一个较早版本将iTunes U算作iOS 8预装应用,已酌情修改。
大家都在买
软媒旗下软件:||||||||
IT之家,软媒旗下科技门户网站 - 爱科技,爱这里。
Copyright (C) , All Rights Reserved.
版权所有 鲁ICP备号

我要回帖

更多关于 高通9008模式驱动下载 的文章

 

随机推荐