神马笔记实现更多的笔记元素
《iOS Messages第三方应用扩展功能分析》分析了iOS Messages如何通过第三方应用扩展来发送更多类型的消息。虽然神马笔记无法实现第三方应用扩展,但可以添加更多的笔记元素来丰富笔记内容。
一、目标
实现更多笔记元素框架,为将来添加更多的笔记元素做准备。
二、功能需求
对话笔记的元素,分为以下几类
- 自动消息——由笔记自动添加,比如日期
- 基础消息——必不可少,最常用的信息,比如文字、语音、拍照
- 扩展消息——类型越多越好,笔记才能更加丰富
其中,扩展消息又分成2个部分,个人收藏以及更多类型。
- 自动消息
类型 | 描述 |
---|---|
日期 | 在对话中根据具体的消息自动添加的时间戳。 |
- 基础消息
类型 | 描述 |
---|---|
文字 | 纯文本文字信息 |
语音 | 通过手机的麦克风进行录音 |
拍照 | 拍照新的图片。 因为Android限制,无法选择拍照为视频,因此将录像归类到扩展信息。 |
- 扩展消息
扩展消息分为2个部分
- 个人收藏——照片,视频
- 更多类型——音乐,网页,公式,天气,字幕,地理位置,……
序号 | 类型 | 描述 |
---|---|---|
1 | 照片 | 选择手机上的照片和视频。目前已经实现照片功能,视频功能将在未来加入。 |
2 | 视频 | 通过摄像头进行录像。 |
3 | 音乐 | 选择手机上的音乐,以及其他音频。 |
4 | 地理位置 | 用来记录一些重要的地点。 |
5 | 网页 | 各种网页链接,并缓存到手机上,以方便收集各种资料。 |
6 | 公式 | 数学方程公式,及其他LaTeX支持的公式。 |
7 | 天气 | 天气信息,写日记的时候可能会用上。 |
8 | 字幕 | 看电影,追美剧,必不可少。 |
…… | …… |
三、实现过程
自动消息和基础消息为固定的消息类型,将来不会在进行扩展。
关键在与实现未来将不断增加的扩展消息。
1. ExtEntry
定义扩展消息的数据。
public class ExtEntry extends BaseEntry {
@SerializedName("name")
String name;
@SerializedName("icon")
String icon;
@SerializedName("enable")
boolean enable;
public ExtEntry(String id) {
super(id);
}
public String getName(</