https://github.com/xenv/jinrishici-sdk-android
今日诗词安卓 SDK
https://github.com/xenv/jinrishici-sdk-android
Last synced: about 1 year ago
JSON representation
今日诗词安卓 SDK
- Host: GitHub
- URL: https://github.com/xenv/jinrishici-sdk-android
- Owner: xenv
- License: bsd-3-clause
- Created: 2019-01-21T11:13:07.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2021-06-06T06:18:54.000Z (about 5 years ago)
- Last Synced: 2025-04-07T04:35:34.451Z (about 1 year ago)
- Language: Java
- Size: 196 KB
- Stars: 27
- Watchers: 4
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 今日诗词安卓 SDK
README: [English](https://github.com/xenv/jinrishici-sdk-android/blob/master/README_EN.md "English") | [中文](https://github.com/xenv/jinrishici-sdk-android/blob/master/README.md "中文")
    
## 安装

通过Gradle集成:
implementation 'com.jinrishici:android-sdk:{release-version}'
通过Maven集成:
com.jinrishici
android-sdk
{release-version}
pom
## 如何使用
### 初始化
在调用获取今日诗词的接口之前任何地方调用初始化方法:
```java
//以下两种初始化方式任选一种即可
JinrishiciFactory.init(getContext());
JinrishiciClient.getInstance().init(getContext());
```
**这一步为了初始化 `SharedPreference` 的存储,让今日诗词的 `token` 能够存储到设备上,避免重复请求 `token` 给服务端带来不必要的开销。**
### 使用
在任何你想要的地方调用函数进行请求:
```java
//异步方法
JinrishiciClient client = JinrishiciClient.getInstance();
client.getOneSentenceBackground(new JinrishiciCallback() {
@Override
public void done(PoetySentence poetySentence) {
//TODO do something
//在这里进行你的逻辑处理
}
@Override
public void error(JinrishiciRuntimeException e) {
Log.w(TAG, "error: code = " + e.getCode() + " message = " + e.getMessage());
//TODO do something else
}
});
//同步方法,当请求出现错误时会抛出 JinrishiciRuntimeException ,请自行捕获进行处理
PoetySentence poetySentence = JinrishiciClient.getInstance().getOneSentence();
```
### 使用项目中的HTTP请求框架发起请求(1.5版本以后提供)
如果不喜欢使用 `HttpsURLConnection` 发起请求,或者希望使用项目中统一的HTTP请求框架,可以通过以下方法指定请求的具体实现。
默认使用 `HttpsURLConnection` 实现。
```java
client.setRequestClient(new RequestClient() {
@Override
public PoetyToken generateToken(String httpMethod, String httpUrl) {
//使用项目中使用的Http框架发起请求,例如OkHttp或者Retrofit
//向给定的httpUrl发送指定httpMethod的请求,然后将返回结果反序列化成PoetyToken返回即可
//该方法为同步调用,无需在此处以异步方式返回结果
return null;
}
@Override
public PoetySentence getPoetySentence(String httpMethod, String httpUrl, String httpHeaderName, String httpHeaderValue) {
//使用项目中使用的Http框架发起请求,例如OkHttp或者Retrofit
//向给定的httpUrl发送指定httpMethod的请求,添加指定的HttpHeaderName和HttpHeaderValue到请求Header中,然后将返回结果反序列化成PoetySentence返回即可
//该方法为同步调用,无需在此处以异步方式返回结果
return null;
}
});
```
### 自定义控件
同样,sdk也提供自定义控件,你只需要将控件添加进布局中,无需处理相关逻辑,控件会自动请求数据并展示到控件上
**如果使用自定义控件的方式,那么不用手动调用初始化的方法,控件会自动调用**
```xml
```
#### 自定义控件支持的自定义属性
|属性名|支持数据类型|备注|
| :------------ | :------------ | :------------ |
|jrsc_refresh_on_click|boolean|点击TextView时是否刷新|
|jrsc_show_error|boolean|当请求出现错误时,是否直接将错误信息显示到TextView上|
|jrsc_show_loading_text|boolean|是否在加载数据时显示加载文本|
|jrsc_text_loading|string|加载数据时显示的文本|
|jrsc_text_error|string|加载失败时显示的文本,当jrsc_show_error为false时有效|
#### 自定义显示数据格式
```java
JinrishiciTextView jinrishiciTextView = findViewById(R.id.jinrisiciTextView);
jinrishiciTextView.setDataFormat(new JinrishiciTextView.DataFormatListener() {
@Override
public String set(PoetySentence poetySentence) {
//TODO return String by yourself
return "ip:" + poetySentence.getIpAddress() + "content:" + poetySentence.getData().getContent();
}
});
```
**设置新的格式后会自动刷新当前显示的格式,数据不会改变**
## 参考代码
[Sample](https://github.com/xenv/jinrishici-sdk-android/blob/master/app/src/main/java/com/jinrishici/sdk/android/demo/MainActivity.java "Sample")
## 混淆配置
**1.3版本之后已经在sdk中自动添加了混淆代码,不用再手动添加混淆配置**
**如果存在问题请手动添加以下配置**
```
# Gson uses generic type information stored in a class file when working with fields. Proguard
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature
# For using GSON @Expose annotation
-keepattributes *Annotation*
# Gson specific classes
-keep class sun.misc.Unsafe { *; }
-keep class com.google.gson.stream.** { *; }
# Application classes that will be serialized/deserialized over Gson
-keep class com.jinrishici.sdk.android.model.** { *; }
```
## License
BSD 3-Clause "New" or "Revised" License