# 小马快递
![](https://raw.githubusercontent.com/wangchenyan/PonyExpress/master/app/src/main/res/drawable-xxhdpi/ic_launcher.png)
## 前言
这是我第一个独立完成的项目,时隔多年又把它拿出来重构了一下代码。
- 项目地址:https://github.com/wangchenyan/PonyExpress
- 有问题请提Issues
- 如果喜欢,欢迎Star!
## 简介
小马快递,您的好帮手。查询并跟踪快递,快递信息及时掌握。<br>
支持全国100多家快递公司,支持扫码查询,智能识别快递公司。<br>
附带生成二维码小工具,方便实用。体积小巧,无广告,无多余权限。
## 更新说明
`v 2.0`
- 全新UI,高仿“支付宝-我的快递”
- 新增智能识别快递公司
- 新增扫一扫
`v 1.5`
- 新增自动更新
`v 1.4`
- 修复无法查询快递的问题
- 支持Android 6.0
- 支持运单备注
- 优化单号扫描界面
## 下载地址
fir.im:http://fir.im/ponyexpress
## 项目
### 公开API
- 快递查询:[快递100](http://www.kuaidi100.com/)(非公开,侵权删)
### 开源技术
- [ZXing](https://github.com/zxing/zxing)
- [Volley](https://developer.android.com/training/volley/index.html)
- [Gson](https://github.com/google/gson)
- [ormlite](https://github.com/j256/ormlite-android)
- [Glide](https://github.com/bumptech/glide)
### 关键代码
网络请求`Volley + Gson`
```java
public static void query(String type, String postId, final HttpCallback<SearchResult> callback) {
String action = "/query";
Map<String, String> params = new HashMap<>(2);
params.put("type", type);
params.put("postid", postId);
String url = makeUrl(action, params);
GsonRequest<SearchResult> request = new GsonRequest<SearchResult>(url, SearchResult.class,
new Response.Listener<SearchResult>() {
@Override
public void onResponse(SearchResult searchResult) {
callback.onResponse(searchResult);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
callback.onError(volleyError);
}
}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> headers = new HashMap<>();
headers.put(HEADER_REFERER, BASE_URL);
return headers;
}
};
request.setShouldCache(false);
getRequestQueue().add(request);
}
```
封装GsonRequest
```java
public class GsonRequest<T> extends Request<T> {
private Class<T> mClass;
private Response.Listener<T> mListener;
private Gson mGson;
public GsonRequest(int method, String url, Class<T> clazz, Response.Listener<T> listener, Response.ErrorListener errorListener) {
super(method, url, errorListener);
mClass = clazz;
mListener = listener;
mGson = new Gson();
}
public GsonRequest(String url, Class<T> clazz, Response.Listener<T> listener, Response.ErrorListener errorListener) {
this(Method.GET, url, clazz, listener, errorListener);
}
@Override
protected Response<T> parseNetworkResponse(NetworkResponse response) {
String jsonString;
try {
jsonString = new String(response.data, HttpHeaderParser.parseCharset(response.headers));
return Response.success(mGson.fromJson(jsonString, mClass), HttpHeaderParser.parseCacheHeaders(response));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return Response.error(new ParseError(e));
}
}
@Override
protected void deliverResponse(T response) {
mListener.onResponse(response);
}
}
```
## 截图
![](https://raw.githubusercontent.com/wangchenyan/PonyExpress/master/art/screenshot_01.jpg)
![](https://raw.githubusercontent.com/wangchenyan/PonyExpress/master/art/screenshot_02.jpg)
![](https://raw.githubusercontent.com/wangchenyan/PonyExpress/master/art/screenshot_03.jpg)
![](https://raw.githubusercontent.com/wangchenyan/PonyExpress/master/art/screenshot_04.jpg)
![](https://raw.githubusercontent.com/wangchenyan/PonyExpress/master/art/screenshot_05.jpg)
## 关于作者
简书:http://www.jianshu.com/users/3231579893ac<br>
微博:http://weibo.com/wangchenyan1993
## License
Copyright 2016 wangchenyan
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
android查询并跟踪快递源码 (131个子文件)
gradlew.bat 2KB
.gitignore 66B
.gitignore 7B
build.gradle 2KB
build.gradle 301B
settings.gradle 15B
gradlew 5KB
gradle-wrapper.jar 49KB
CaptureActivity.java 11KB
SearchActivity.java 8KB
CameraManager.java 7KB
ResultActivity.java 7KB
PermissionReq.java 7KB
ExpressActivity.java 6KB
CameraConfigurationManager.java 6KB
RoundImageView.java 6KB
QRCodeActivity.java 5KB
ViewfinderView.java 5KB
HttpClient.java 4KB
CompanyAdapter.java 4KB
CaptureActivityHandler.java 4KB
IndexBar.java 3KB
CompanyActivity.java 3KB
HistoryAdapter.java 3KB
DecodeHandler.java 3KB
DataManager.java 3KB
HistoryActivity.java 3KB
DecodeFile.java 3KB
ClearableEditText.java 2KB
BaseActivity.java 2KB
DecodeThread.java 2KB
AboutActivity.java 2KB
ResultAdapter.java 2KB
EncodeHandler.java 2KB
Utils.java 2KB
SuggestionResult.java 2KB
SearchResult.java 2KB
FakeX509TrustManager.java 2KB
History.java 2KB
DecodeFormatManager.java 2KB
PreviewCallback.java 2KB
SuggestionAdapter.java 2KB
AutoFocusCallback.java 2KB
GsonRequest.java 2KB
DBHelper.java 1KB
ViewBinder.java 1KB
SearchInfo.java 986B
SnackbarUtils.java 929B
ScrollGridView.java 846B
ScrollListView.java 839B
CompanyEntity.java 703B
ExpressApplication.java 402B
Bind.java 308B
HttpCallback.java 227B
Extras.java 215B
RequestCode.java 166B
Callback.java 92B
NoProGuard.java 72B
screenshot_04.jpg 48KB
screenshot_05.jpg 41KB
screenshot_01.jpg 33KB
screenshot_02.jpg 28KB
screenshot_03.jpg 26KB
company.json 7KB
wangchenyan.keystore 2KB
debug.keystore 2KB
README.md 5KB
beep.ogg 6KB
ic_launcher.png 15KB
ic_launcher_144.png 15KB
ic_launcher.png 10KB
ic_launcher.png 7KB
ic_sweep.png 5KB
ic_error.png 4KB
ic_searching.png 3KB
ic_logistics_blue.png 2KB
ic_capture_album.png 1KB
ic_capture_flashlight.png 1KB
ic_search.png 1KB
ic_capture_album_pressed.png 1KB
ic_post.png 1020B
ic_capture_flashlight_pressed.png 1000B
ic_no_exist.png 992B
ic_logistics_grey.png 832B
ic_default_logo.png 778B
ic_scan.png 694B
ic_menu_history.png 604B
ic_menu_back.png 326B
ic_edit_text_clear.png 294B
ic_list_arrow_right.png 221B
ic_menu.png 135B
ic_menu_qrcode.png 104B
proguard-rules.pro 1KB
gradle.properties 856B
gradle-wrapper.properties 230B
activity_result.xml 8KB
activity_express_include.xml 4KB
activity_search.xml 3KB
AndroidManifest.xml 3KB
activity_capture.xml 2KB
共 131 条
- 1
- 2
资源评论
ImomoTo
- 粉丝: 41
- 资源: 50
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功