当前位置: 首页 > news >正文

Android FM模块学习之四源码分析(八)

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

接上一篇 ,今天将要来看看android\vendor\qcom\opensource\fm\fmapp2\src\com\caf\fmradio \PresetStation.java

调整频率位置状态构造方法

public PresetStation(String name, int frequency) {
           mName = name;
      /*
       *  setFrequency set the name to
       *  "Frequency" String if Name is empty
       */
      setFrequency(frequency);
   }

设置频率

 public void setFrequency(int freq){
      mFrequency = freq;
      /* If no name set it to the frequency */
      if (TextUtils.isEmpty(mName))
      {
         mName = ""+mFrequency/1000.0;
      }
      return;
   }

?

构造方法

public PresetStation(PresetStation station) {
      Copy(station);
      /*
       *  setFrequency set the name to
       *  "Frequency" String if Name is empty
       */
      setFrequency(station.getFrequency());
   }

?

复制频率位置

?

public void Copy(PresetStation station) {
      /* Let copy just do a copy
       * without any manipulation
       */
      mName = station.getName();
      mFrequency = station.getFrequency();
      mPI = station.getPI();
      mPty = station.getPty();
      mRDSSupported = station.getRDSSupported();
 
      mPtyStr = station.getPtyString();
      mPIStr = station.getPIString();
   }

获取 public static String getFrequencyString(int frequency)字符串

?

  public static String getFrequencyString(int frequency) {
          double frequencyDbl = frequency / 1000.0;
      String frequencyString =""+frequencyDbl;
      return frequencyString;
   }

常规解析PI代码从整数到呼号字符串


public static String parsePI(int piCode)
   {
      String callSign = "";
      if ( (piCode >> 8) == 0xAF)
      {//CALL LETTERS THAT MAP TO PI CODES = _ _ 0 0.
         piCode = ((piCode & 0xFF) << 8);
      }
      /* Run the second exception
         NOTE: For 9 special cases 1000,2000,..,9000 a double mapping
         occurs utilizing exceptions 1 and 2:
         1000->A100->AFA1;2000->A200->AFA2; ... ;
         8000->A800->AFA8;9000->A900->AFA9
      */
      if ( (piCode >> 12) == 0xA)
      {//CALL LETTERS THAT MAP TO PI CODES = _ 0 _ _.
         piCode = ((piCode & 0xF00) << 4) + (piCode & 0xFF);
      }
      if ( (piCode >= 0x1000) && (piCode <= 0x994E))
      { String ShartChar;
         /* KAAA - KZZZ */
         if ( (piCode >= 0x1000) && (piCode <= 0x54A7))
         {
            piCode -= 0x1000;
            ShartChar = "K";
         } else
         { /* WAAA - WZZZ*/
            piCode -= 0x54A8;
            ShartChar = "W";
         }
         int CharDiv = piCode / 26;
         int CharPos = piCode - (CharDiv * 26);
         char c3 = (char)('A'+CharPos);
 
         piCode = CharDiv;CharDiv = piCode / 26;
         CharPos = piCode - (CharDiv * 26);
         char c2 = (char)('A'+CharPos);
 
         piCode = CharDiv;
         CharDiv = piCode / 26;
         CharPos = piCode - (CharDiv * 26);
         char c1 = (char)('A'+CharPos);
         callSign = ShartChar + c1+ c2+ c3;
      } else if ( (piCode >= 0x9950) && (piCode <= 0x9EFF))
      {//3-LETTER-ONLY CALL LETTERS
         callSign = get3LetterCallSign(piCode);} else
      {//NATIONALLY-LINKED RADIO STATIONS CARRYING DIFFERENT CALL LETTERS
         callSign = getOtherCallSign(piCode);
      }
      return callSign;
   }

?

获得项目类型的文本字符串的代码

public static String getRDSPtyString(int pty)


public static String parsePTY(int pty)
   {
      String ptyStr="";
      int rdsStd = FmSharedPreferences.getFMConfiguration().getRdsStd();
      if(rdsStd ==  FmReceiver.FM_RDS_STD_RBDS)
      {
         ptyStr = getRBDSPtyString(pty);
      }
      else if(rdsStd ==  FmReceiver.FM_RDS_STD_RDS)
      {
         ptyStr = getRDSPtyString(pty);
      }
      return (ptyStr);

转载于:https://my.oschina.net/u/920274/blog/2998543

相关文章:

  • 初识MongoDB分片
  • BZOJ 2821 作诗(Poetize)(分块)
  • python学习笔记(九):操作数据库
  • Java今年最流行的三大框架你应该学习了
  • JSON数组,JSON对象,数组的区别与基本操作整理
  • 阿里云全球19个地域节点,哪个节点的服务器好,速度快?
  • 回顾2017:基础设施支出增长 思科占主导地位
  • 微服务入门【系列视频课程】
  • mongodb集群模式(主从模式,副本集模式,分片模式)
  • 透彻影像王书浩:三易其辙与功不唐捐
  • 如何使用 Spinnaker 和 Kubernetes 进行数据库变更发布
  • 为什么需要模版成员方法
  • W3C官方推荐使用新发布的HTML5.2
  • Lintcode: Minimum Subarray 解题报告
  • laravel ORM get() first()
  • [译]前端离线指南(上)
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • Git初体验
  • HTTP 简介
  • Redis 中的布隆过滤器
  • Spring-boot 启动时碰到的错误
  • uni-app项目数字滚动
  • win10下安装mysql5.7
  • Windows Containers 大冒险: 容器网络
  • 包装类对象
  • 初识 beanstalkd
  • 动态规划入门(以爬楼梯为例)
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 欢迎参加第二届中国游戏开发者大会
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 理解在java “”i=i++;”所发生的事情
  • 漂亮刷新控件-iOS
  • 前端js -- this指向总结。
  • 前端存储 - localStorage
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • 函数计算新功能-----支持C#函数
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • (poj1.3.2)1791(构造法模拟)
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (论文阅读30/100)Convolutional Pose Machines
  • (十三)Maven插件解析运行机制
  • (正则)提取页面里的img标签
  • .“空心村”成因分析及解决对策122344
  • .net 按比例显示图片的缩略图
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .NET序列化 serializable,反序列化
  • @transaction 提交事务_【读源码】剖析TCCTransaction事务提交实现细节
  • [8-23]知识梳理:文件系统、Bash基础特性、目录管理、文件管理、文本查看编辑处理...
  • [8481302]博弈论 斯坦福game theory stanford week 1
  • [Android View] 可绘制形状 (Shape Xml)
  • [BROADCASTING]tensor的扩散机制
  • [bug总结]: Feign调用GET请求找不到请求体实体类
  • [BZOJ1053][HAOI2007]反素数ant