修改FMRadio频率的工作范围

android调频收音机代码,android 收音机 FM 驱动 hal层 框架层以及应用层代码 【实例简介】android 收音机 FM 驱动 hal层 框架层以及应用层代码方法一 不需要framework部分1.fm放到 \hardware\rk2x2.FmRadio 放到 packages\apps3.hardware\libhardware\include\hardware\fm.h 放到hardware\libhardware\include\hardware\fm.h4.build... 阅读详情

1.修改alps\vendor\mediatek\proprietary\packages\apps\FMRadio\src\com\android\fmradio\FmUtils.java

 

public class FmUtils {
    private static final String TAG = "FmUtils";

    // FM station variables
    public static final int DEFAULT_STATION = 760;
    public static final float DEFAULT_STATION_FLOAT = computeFrequency(DEFAULT_STATION);
    // maximum station frequency
    private static final int HIGHEST_STATION = 950;
    // minimum station frequency
    private static final int LOWEST_STATION = 760;


2.修改alps\vendor\mediatek\proprietary\packages\apps\FMRadio\src\com\android\fmradio\FmService.java

 

 

        if (mPowerStatus != POWER_UP) {
            Log.w(TAG, "firstPlaying, FM is not powered up");
            return false;
        }
	// delete 20170407
    /*    boolean isSeekTune = false;
        float seekStation = FmNative.seek(frequency, false);
        int station = FmUtils.computeStation(seekStation);
        if (FmUtils.isValidStation(station)) {
            isSeekTune = FmNative.tune(seekStation);
            if (isSeekTune) {
                playFrequency(seekStation);
            }
        }
	
        // if tune fail, pass current station to update ui
        if (!isSeekTune) {
            seekStation = FmUtils.computeFrequency(mCurrentStation);
        }
	*/
	//delete end
	//add 20170407 
		boolean isSeekTune =true;
		playFrequency(frequency);
	//end
        return isSeekTune;
    }


3.alps\device\mediatek\common\kernel-headers\linux\fm.h

 

--- a/alps/device/mediatek/common/kernel-headers/linux/fm.h
+++ b/alps/device/mediatek/common/kernel-headers/linux/fm.h
@@ -44,8 +44,8 @@ enum {
 #define FMR_SEEK_SPACE      1           //FM radio seek space,1:100KHZ; 2:200KHZ
 #define FMR_SCAN_CH_SIZE    80          //FM radio scan max channel size
 #define FMR_BAND            1           //FM radio band, 1:87.5MHz~108.0MHz; 2:76.0MHz~90.0MHz; 3:76.0MHz~108.0MHz; 4:special
-#define FMR_BAND_FREQ_L     875         //FM radio special band low freq(Default 87.5MHz)
-#define FMR_BAND_FREQ_H     1080        //FM radio special band high freq(Default 108.0MHz)
+#define FMR_BAND_FREQ_L     760         //FM radio special band low freq(Default 87.5MHz)
+#define FMR_BAND_FREQ_H     950        //FM radio special band high freq(Default 108.0MHz)
 #define FM_SCAN_SORT_SELECT FM_SCAN_SORT_NON
 #define FM_SCAN_SELECT      FM_SCAN_SEL_HW
 #define FM_SCAN_SOFT_MUTE_GAIN_TH  3    //soft-mute threshold when software scan, rang: 0~3, 0 means better audio quality but less channel
@@ -91,10 +91,10 @@ enum {
 #define FM_UE_FREQ_MIN  875
 #define FM_UE_FREQ_MAX  1080
 #define FM_JP_FREQ_MIN  760
-#define FM_JP_FREQ_MAX  1080
+#define FM_JP_FREQ_MAX  950
 #define FM_FREQ_MIN  FMR_BAND_FREQ_L
 #define FM_FREQ_MAX  FMR_BAND_FREQ_H
-#define FM_RAIDO_BAND FM_BAND_UE
+#define FM_RAIDO_BAND FM_BAND_JAPAN//FM_BAND_UE
 
 // space

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Android实现FM收音机 实现源码下载链接 http://download.youkuaiyun.com/detail/hi_zhengjian/8794731 ***方法一:直接在app里面通过JNI访问HAL层***         FmRadio应用代码结构如下: 一、FMRadio.java通过FmRadioService提供的服务通过JNI访问到HAL层:   FmR 阅读详情

相关推荐

Android Fm radio

It is a document about fm radio in android.

Android12 FM Radio按键距离太近

界面按钮部分重叠,在源码没啥问题的情况下,我觉得应该跟分辨率有关。

weixin_43824153的博客 871

Cass三角网法土方计算优化技巧:如何根据地形特点调整边界采样间距

本文深入探讨了Cass软件中三角网法(DTM法)土方计算的优化技巧,核心在于如何根据地形的复杂程度动态调整边界采样间距。针对平坦、复杂及人工构造物等不同地形特征,提供了具体的间距调整策略与精度验证方法,旨在帮助工程师在计算精度与效率间找到最佳平衡,实现精细化土方计算。

weixin_29294975的博客 526

radio android代码,FM移植包(基于Android4.4) android FM 收音机 驱动 hal层应用层代码以及 框架层(Android FM radio driver - 下载 -...

移植说明.txt方法二(FmService写在系统服务)\android 平添系统服务 - Android.htm方法二(FmService写在系统服务)\Android 添加系统服务.htm方法二(FmService写在系统服务)\bionic\libc\kernel\common\linux\Hw_fm.h方法二(FmService写在系统服务)\FmRadio\FmRadio\.classp...

weixin_39869378的博客 768

电网渗透之终端安全

        电力系统安全不仅关系到电网的稳定运行,也关系到国家能源安全和国计民生,甚至关系到国家的安全和利益,电力系统由于结构复杂多样、分布广泛、重要性高,一旦系统瘫痪影响巨大,因此,极容易成为敌对势力攻击的首选目标。随着信息安全暴露面迅速增加,将给公司网络安全防线带来严峻挑战。       监控、保障这些电力系统安全运行变的尤为重要。内部安全防护产品有防火墙、纵向加密、反向隔离设备等...

guapi007008的博客 2722

基于Xilinx Artix7 的FPGA高级应用 (二):千兆以太网通信(实战篇)第一期

本项目是基于Xlinx Artix7 XC7A35T芯片 以太网芯片选用的是RTL8211EG PHY芯片 MAC 和PHY接口标准是GMII 开发工具是vivado 2018.3 我们先来复习一下以太网的基本通信原理: 当我们的计算机需要与局域网中另外的设备进行通信的时候,需要将数据传输到网卡进行编码,然后传输到线上,经过另一个设备的网卡解码成该设备能读取的数据。 关于以太网协议的知识在原理篇中已经讲过,不再重复,下面直接看接收代码: 首先注意我们的MAC和PHY通信选择的是GMII接口标准,发送数据一

工大技术底层人员的博客 4034

Android中FMRadio实现

Android FMRadio 收音机 NDK JNI

6619

基于FPGA的DDR学习——1.基础知识

⚪DDR2(Double Data Rate2)SDRAM是由JEDEC(电子设备工程联合委员会)开发的第三代SDRAM内存技术标准,1.8V工作电压,240线接口,提供了相较于DDR SDRAM更高的运行效能与更低的电压,同样采用在时钟的上升/下降沿同时进行数据传输的基本方式,但拥有两倍于上一代DDR内存预读取能力(即4bit数据预取能力),其常见的频率规范有DDR2 400\533\667\800\1066\1333等,总线频率553MHZ的DDR2内存只需133MHZ的工作频率。

qq_44932488的博客 2072

Android 自定义View:实现一个 FM 刻度尺

效果图 前言 最近在做收音机项目需要绘制一个 FM 刻度尺,刚开始考虑了一下现有的开源库,后来发现都不太满足 UI 小哥哥的要求,于是决定自己画一个吧。实现的 Demo 效果如上所示。主要包含大中小三种长度的刻度线,部分刻度整数值和一根指示器。这样就完美实现了一个 FM 刻度尺。下面大致介绍一下具体的做法。只想看代码的同学可以直奔 Github 地址 开始绘制 我是通过继承 View 重写相关类...

weixin_34292402的博客 1001

Arduino创意作品实战案例:手把手教你做温控风扇

通过这个实用的arduino创意作品,轻松实现温度感应与风扇自动控制,结合传感器与编程逻辑,打造智能散热系统,是入门者理想的arduino创意作品实践项目。

weixin_42311427的博客 610

公交车调度排班优化算法研究与实现

本文提出的公交车调度排班优化算法基于遗传算法,能够较好地处理公交车调度排班问题,使得车辆数量和运营时间得到平衡,公交车的使用效率得到了优化。在模拟的公交车路线中,使用本文所提出的算法,得到了一组较优的公交车调度排班方案。其中,车辆数量的多少会影响到公交车的行驶速度和等候时间,而运营时间的长短则会直接影响到公交车的使用效率和成本。本文基于遗传算法,通过随机生成种群、选择、交叉、变异等操作,逐步优化种群中个体的适应度,最终得到较优的公交车调度排班方案。以下是本文中所使用的Matlab代码实现,供参考。

PixelLoom的博客 872

MT6620修改FM工作频率范围的方法

MT6620修改FM工作频率范围的方法 [DESCRIPTION] 由于目前客户产品会销往世界各地,针对不同区域FM 工作频率范围不同,所以就会存在销往不同区 域的手机需要修改FM工作频率范围的问题。 针对此需求该FAQ提供具体的修改方法。 [SOLUTION] 具体实现如下:(这里包含FM driver端的修改以及上层JAVA端的修改) 1、fm.h KK及之前版本路

sandform的博客 1219

黑猫带你学eMMC协议第22篇:emmc可靠写详解(Write Reliability)

1 前言 1.1 声明 本文依据eMMC JEDEC5.1、网络资料及个人工作经验整理而成,如有部分错误请留言。 本文部分内容可能源自网络,侵删。 本文结合eMMC JEDEC5.1协议手册查看效果更佳。 1.2 内容提要 1、什么是可靠性写属性(Write Reliability)? 2、可靠写和普通的写有什么区别? 3、设置可靠写的流程及流程框图。 4、可靠写需要遵循哪些规则? 1.3 参考链接 本文主要参考链接:http://www.up48.com/cn/support/8_37.html 2 什么

黑猫奥利奥的博客 3126

如何通过5个步骤将百元对讲机升级为专业设备?泉盛UV-K5/K6开源固件性能提升方案终极指南

泉盛UV-K5/K6开源固件定制项目为无线电爱好者提供了一个完整的性能飞跃方案。这个开源项目将百元级对讲机的性能提升至专业水平,通过固件深度改造实现自动多普勒频移补偿、高清频谱分析、中文输入法等高级功能。本文将为您揭示完整解锁设备潜能的完整路线图。 ## 能力解锁路线图:从基础到专业的三级进化 ### 第一阶段:基础功能强化 **问题**:原厂固件功能有限,无法满足业余无线电爱好者的专业需求

gitblog_00421的博客 436

基于Simulink的电气弹簧ES稳压控制模型仿真

在本文中,我们将使用Simulink建立一个ES稳压控制系统的模型,并通过仿真验证其性能。接下来,我们配置了各个组件的参数,包括电源电压、负载电流以及ES和控制器的传递函数。通过调整模型中的参数和控制算法,我们可以进一步优化系统的性能并实现更好的电压稳定调节。该系统通过对电力系统中的ES进行控制,调整其阻尼特性,以实现对电压的稳定调节。例如,我们可以设置电源的电压值、负载的电流值,以及控制器的参数(如PID控制器的比例、积分和微分增益)。反馈控制可以根据测量值来调整控制器的输出,从而实现对电压的稳定调节。

DevProZ的博客 423

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

uv-k5-firmware-custom:LOSEHU 全功能泉盛 UV-K5/K6 固件的版本体系、编译定制与 EEPROM 扩容布局实战指南

本文为泉盛 UV-K5/K6 手持台定制固件 uv-k5-firmware-custom(LOSEHU 全功能版)的技术指南:先讲清 LOSEHU 系列六个版本后缀(如 LOSEHU132K/132H/132E/132HS)的命名规则与能力矩阵,再结合 [Makefile](https://link.gitcode.com/i/dcf9a135479b762f1660a48307ea8842)、[

gitblog_00796的博客 426

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

android FM JNI库参考原生实现

外置FM设备实现基本功能,提供类似原生FM的JNI库实现

jeephao的博客 774

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

一步步客制化Android桌面(Launcher3)图标

由于最近在负责MTK5.1的Android系统开发,所以本文就以5.1的代码为参考。其它版本虽然会略有不同,但是修改思路是大致相同的。在市面上很多手机都会对原生桌面进行一些修改,比如把时钟、日历修改成动态显示,或者对整个界面风格进行修改。那么我们就来模仿一下,简单地修改原生应用的图标显示,从而达到修改主题样式的目的。5.1上的Android桌面,其实也就是Launcher3,位置是 alps\pa

mikechenmj的博客 6774

Android 系统(253)---O版本,用耳机按键控制FM的修改方法

O版本,用耳机按键控制FM的修改方法    收音机播放时,按下耳机hook键,收音机暂停;若再次按hook键,收音机又会播放,之前的FAQ13878 由于架构改变,在O版本上会无效,现提供新的修改方法。     一、 修改FmService.java (/vendor/mediatek/proprietary/packages/apps/FMRadio/src/com/android/fm...

zhangbijun1230的专栏 1327

android开发:FM刻度尺自定义view

效果: 公司最近接了个傻屌项目,写个app控制广场舞音箱,我也是醉了。需要使用到刻度尺去换FM台,自己对自定义view研究又不是很多,只要会找会改实现自己想要的就行。然后自己网上参考了这位老哥的博客:Android 自定义View:实现一个 FM 刻度尺,在它上面修改了一下实现自己的需求: 代码: package com.skyworth.car.rulerdemo; import and...

一个程序员-二白的博客 836

Android8.0 FmRadio源码分析之录音篇

FmRadio录音流程 界面管理 FmRecordActivity 后台服务 FmService 录音实现 FmRecorder FmRadio录音流程 录音界面如图 通过FmMainActivity的 Start recording 菜单选项即可进入FmRecordActivity直接进行录音,当FmRecordActivity销毁时,录音则停止。如果要实现后...

此男子淡漠 4238

Android FM模块学习之二 FM搜索频率流程

转自:http://blog.youkuaiyun.com/tfslovexizi/article/details/41315483 上一篇大概分析了一下FM启动流程,若不了解Fm启动流程的,可以去打开前面的链接先了解FM启动流程,接下来我们简单分析一下FM的搜索频率流程。 在了解源码之前,我们先看一下流程图: 其实从图中可以看到,实现搜索频率的功能是在底层CPP文件,java层只操作...

weixin_34217773的博客 218

Android Configuration change引发的问题及解决方法

之前在学习Fragment和总结Android异步操作的时候会在很多blog中看到对Configuration Change的讨论,以前做的项目都是固定竖屏的,所以对横竖屏切换以及横竖屏切换对程序有什么影响都没什么了解。见到的次数多了,总是掠过去心理总觉得不踏实,最终还是好好看了些介绍Congifuration Change的blog,在此做个梳理也不枉花了那么多时间。有疏漏和描述不准确的地方恳请

Run Away 1万+

华为畅享8E高配版重新安装华为FM收音机APP

在浏览器中搜“华为收音机”,下载这个app:com.huawei.android.FMRadio.apk(25433KB) 安装后,如果没内置fm芯片的,就没有本地收音机的界面。只有网络收音机的功能。也就是说,原装机系统的fm收音机只有收音机功能。这个新版本的app是整合了本地FM收音机与网络fm收音机功能。现在作为备用,偶尔拿来听一下收音机,之前我都不知道有收音机功能(内含fm芯片)。上次进水维修电池插头时,不清楚的前提下恢复出厂了。这个手机其实还能装个备卡用,因为它是2018年4月上市的。

chengg0769 平淡无奇见真知 独立博客: http://blog.mis2erp.com 2420

Android第三方无源码应用图标icon定制、修改、替换与添加背景

为适配的各种UI,客户经常会对要求应用的图标进行替换、定制或修改。修改的方式有很多,效果也不尽相同,本文章将会把所有的修改方式与君解析。

qq_48192676的博客 4603

InnoDB 内存结构总览:Change Buffer、AHI 与 Log Buffer

本文系统梳理InnoDB内存结构中的ChangeBuffer、Adaptive Hash Index(AHI)与LogBuffer。ChangeBuffer缓存二级索引页不在内存时的变更,减少随机IO,仅在页加载时合并;聚簇索引修改立即执行,因数据本身不可延后。AHI基于高频等值查询自动构建哈希索引,加速定位,仅支持等值操作。LogBuffer为redo log内存缓冲,配合磁盘日志实现崩溃恢复。三者均服务于性能优化,其中ChangeBuffer与AHI共享BufferPool空间,而LogBuffer独立

bksczm的博客 306
上一篇: 【MTK】通过蓝牙分享及接收apk应用文件
下一篇: android 7.0 添加多用户时跳过wifi报错
旧时旅人
博客等级 码龄10年 186粉丝 117原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旧时旅人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值