# Blogger Radio App - 项目分析
## 项目概述
- **项目类型**: Android移动应用
- **主要功能**: 基于Blogger API的在线广播电台应用,支持音乐流媒体播放、分类浏览、收藏管理
- **技术栈**:
- Java/Kotlin (Android)
- Blogger API v3
- Firebase (推送通知)
- Retrofit (网络请求)
- Glide (图片加载)
- Material Design组件
## 模块结构
```
blogger_radio_app_4.0.0/
├── android_studio/ # Android Studio项目
│ ├── BloggerRadioApp/ # 主应用模块
│ │ ├── app/src/main/java/com/app/bloggerradioapps/
│ │ │ ├── activity/ # Activity类
│ │ │ │ ├── MainActivity.java
│ │ │ │ ├── ActivitySplash.java
│ │ │ │ ├── ActivityPermission.java
│ │ │ │ └── ...
│ │ │ ├── adapter/ # RecyclerView适配器
│ │ │ │ ├── AdapterCategory.java
│ │ │ │ ├── AdapterRadio.java
│ │ │ │ └── ...
│ │ │ ├── callback/ # 回调接口
│ │ │ ├── database/ # 数据库
│ │ │ │ ├── prefs/ # SharedPreferences
│ │ │ │ └── sqlite/ # SQLite数据库
│ │ │ ├── fragment/ # Fragment类
│ │ │ ├── helper/ # 辅助类
│ │ │ ├── models/ # 数据模型
│ │ │ ├── notification/ # 推送通知
│ │ │ ├── rest/ # REST API接口
│ │ │ ├── service/ # 服务类
│ │ │ │ ├── RadioPlayerService.java
│ │ │ │ └── parser/ # 流媒体解析器
│ │ │ └── util/ # 工具类
│ │ └── res/ # 资源文件
│ ├── BloggerRadioAppBanner/ # 横幅广告版本
│ └── BloggerRadioAppBase/ # 基础版本
├── config_json/ # 配置文件
│ └── config.json # 应用配置
├── documentation/ # 文档
└── push_notification/ # 推送通知配置
```
## 核心业务逻辑
### 1. 音乐播放逻辑
- **RadioPlayerService**: 后台音乐播放服务
- 支持多种流媒体格式: M3U, PLS, ASX
- 音频焦点管理,支持来电暂停/恢复
- 媒体按钮控制支持
### 2. 数据获取逻辑
- 使用Blogger API v3获取博客内容
- Retrofit进行网络请求
- 支持标签分类浏览
- 专辑封面自动获取
### 3. 广告系统
- 支持多种广告平台: AdMob, Facebook Audience Network, StartApp, Unity, AppLovin, IronSource
- 可配置的广告展示间隔
- 原生广告、横幅广告、插页广告支持
### 4. 配置系统
- JSON配置文件驱动
- 支持远程配置更新
- 标签分类自定义
- RTL语言支持
## 核心代码分析
### Config.java
```java
public class Config {
// 访问密钥
public static final String ACCESS_KEY = "XXXXXXXX...";
// 标签排序方式
public static final String LABELS_SORTING = Constant.LABEL_NAME_ASCENDING;
// 默认分类视图类型
public static final int DEFAULT_CATEGORY_VIEW_TYPE = Constant.CATEGORY_GRID_2;
// 功能开关
public static final boolean OPEN_PLAYER_WHEN_RADIO_LIST_CLICKED = true;
public static final boolean ENABLE_RTL_MODE = false;
public static final boolean RESUME_RADIO_ON_PHONE_CALL = false;
}
```
### MainActivity.java
- 主Activity,使用ViewPager + TabLayout实现多标签导航
- 集成SlidingUpPanelLayout实现底部播放器面板
- 处理广告展示和应用更新检查
- 实现搜索、收藏、设置等功能入口
### RadioPlayerService.java
- 继承Service的音频播放服务
- 支持多种流媒体格式解析 (M3U, PLS, ASX)
- 音频焦点管理和电话状态监听
- 通知栏播放器控制
### ApiInterface.java
```java
public interface ApiInterface {
// Blogger API接口定义
// 获取文章列表、标签、详情等
}
```
## 功能特点
1. **音乐流媒体**: 支持在线广播电台流媒体播放
2. **分类浏览**: 基于Blogger标签的音乐分类
3. **收藏管理**: 本地SQLite数据库收藏喜欢的电台
4. **搜索功能**: 支持按标题搜索电台
5. **后台播放**: 支持后台音频播放和通知控制
6. **多广告平台**: 支持10+种广告平台集成
7. **推送通知**: Firebase推送通知支持
8. **主题定制**: 支持自定义配色和布局
9. **RTL支持**: 阿拉伯语等RTL语言支持
## 部署说明
1. 配置Blogger API密钥和博客ID
2. 修改config.json配置广告和标签
3. 编译Android项目生成APK
4. 配置Firebase推送通知
5. 发布到Google Play商店