Commit 0fdb8fa8 authored by 陈赛康's avatar 陈赛康

搜索功能添加;

parent 18f2e07c
apply plugin: 'com.android.application'
apply plugin: 'com.jakewharton.butterknife'
configurations.all {
resolutionStrategy.force 'com.android.support:support-annotations:23.1.0'
}
......@@ -57,6 +57,8 @@ dependencies {
compile files('libs/poi/poi-3.17.jar')
compile files('libs/poi/poi-scratchpad-3.17.jar')
compile project(':scanlibrary')
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:design:25.3.1'
compile 'com.github.bumptech.glide:glide:4.3.1'
......@@ -64,8 +66,8 @@ dependencies {
compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'org.xutils:xutils:3.5.0'
compile 'com.android.support:support-v4:25.3.1'
compile 'com.google.code.gson:gson:2.8.1'
testCompile 'junit:junit:4.12'
annotationProcessor 'com.github.bumptech.glide:compiler:4.3.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
compile 'com.google.code.gson:gson:2.8.1'
}
......@@ -22,7 +22,7 @@
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<!--<category android:name="android.intent.category.LAUNCHER" />-->
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".ui.activity.RecognizeActivity" />
......@@ -38,6 +38,7 @@
<activity
android:name=".ui.activity.OcrRecordActivity"
android:launchMode="singleTask" />
<activity android:name=".ui.activity.SearchActivity"></activity>
</application>
</manifest>
\ No newline at end of file
......@@ -99,12 +99,6 @@ public class OcrApplication extends Application {
}
}
public void exit(){
// for (Activity activity : activities) {
// if (activity!=null) {
// activity.finish();
// }
// }
// System.exit(1);
ActivityManager manager = (ActivityManager)getApplicationContext().getSystemService(ACTIVITY_SERVICE); //获取应用程序管理器
manager.killBackgroundProcesses(getPackageName()); //强制结束当前应用程序
}
......
......@@ -2,19 +2,42 @@ package cn.com.bril.androidocr.studio.beans;
/**
* Created by sunny on 2018-3-16.
* status 0导出;1分享
* 主文件
* status 为文件归属
*/
public class OcrInfo {
private String id;
private String id;
private String fileName;
private String filePath;
private String uploadUser;
private String lastUpdateTime;
private String fileSuffix;
private String uploadPeple;
private String createTime;
private String lastUpdateTime;
private String fileType;
private String status;
private String remark;
private boolean isChecked;
public boolean isChecked() {
return isChecked;
}
public void setChecked(boolean checked) {
isChecked = checked;
}
public String getId() {
return id;
}
......@@ -39,20 +62,20 @@ public class OcrInfo {
this.filePath = filePath;
}
public String getUploadUser() {
return uploadUser;
public String getFileSuffix() {
return fileSuffix;
}
public void setUploadUser(String uploadUser) {
this.uploadUser = uploadUser;
public void setFileSuffix(String fileSuffix) {
this.fileSuffix = fileSuffix;
}
public String getLastUpdateTime() {
return lastUpdateTime;
public String getUploadPeple() {
return uploadPeple;
}
public void setLastUpdateTime(String lastUpdateTime) {
this.lastUpdateTime = lastUpdateTime;
public void setUploadPeple(String uploadPeple) {
this.uploadPeple = uploadPeple;
}
public String getCreateTime() {
......@@ -63,6 +86,22 @@ public class OcrInfo {
this.createTime = createTime;
}
public String getLastUpdateTime() {
return lastUpdateTime;
}
public void setLastUpdateTime(String lastUpdateTime) {
this.lastUpdateTime = lastUpdateTime;
}
public String getFileType() {
return fileType;
}
public void setFileType(String fileType) {
this.fileType = fileType;
}
public String getStatus() {
return status;
}
......@@ -70,4 +109,12 @@ public class OcrInfo {
public void setStatus(String status) {
this.status = status;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
}
......@@ -7,14 +7,27 @@ package cn.com.bril.androidocr.studio.configs;
public class RequestConfig {
public static int TAKE_PHOTO_REQUEST=1;
public static int PERMISSION_REQUEST_CODE=99;
// public static String BASE_URL="http://zjk.haomo-studio.com/zhangjiakouOA/";
public static String BASE_URL="http://192.168.1.72:8050/zhangjiakouOA/";
public static String BASE_URL="http://zjk.haomo-studio.com/zhangjiakouOA/";
// public static String BASE_URL="http://192.168.1.72:8050/zhangjiakouOA/";
//添加
public static String ADD_URL=BASE_URL+"cc_ocr_files/new?";
public static String ADD_URL=BASE_URL+"cc_files/new";
//上传文件
public static String UP_FILE=BASE_URL+"upload_ocr_file";
//编辑文件
public static String EDIT_FILE_URL=BASE_URL+"cc_files/";
//创建导出记录
public static String EXPORT_CREATE_URL=BASE_URL+"cc_export_records/new";
//导出记录
public static String EXPORT_LIST_URL=BASE_URL+"cc_ocr_files?";
public static String EXPORT_RECORD_URL=BASE_URL+"cc_export_records";
//分享记录
public static String SHARE_RECORD_URL=BASE_URL+"cc_sharing_records";
//批量导出
public static String BATCH_EXPORT_URL=BASE_URL+"cc_ocr_files/create/batch";
//批量删除
public static String BATCH_DELETE_URL=BASE_URL+"cc_export_records/delete/batch";
//文件下载
public static String DOWN_LOAD_URL=BASE_URL+"file_down";
......
package cn.com.bril.androidocr.studio.http;
import android.util.Log;
import org.json.JSONArray;
import org.xutils.common.Callback;
import org.xutils.common.util.KeyValue;
import org.xutils.http.RequestParams;
......@@ -14,10 +13,11 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import cn.com.bril.androidocr.studio.beans.OcrRootBean;
import cn.com.bril.androidocr.studio.configs.RequestConfig;
import cn.com.bril.androidocr.studio.interf.OnHttpListener;
import static com.bumptech.glide.gifdecoder.GifHeaderParser.TAG;
import cn.com.bril.androidocr.studio.ui.activity.VertifyActivity;
import cn.com.bril.androidocr.studio.utils.GsonUtil;
/**
* Created by sunny on 2018-3-12.
......@@ -26,7 +26,7 @@ import static com.bumptech.glide.gifdecoder.GifHeaderParser.TAG;
public class HttpHolder {
//add
public static void exportFile(String url,Map<String,Object> map,Callback.CommonCallback<String> callback){
public static void exportFile(String url, Map<String,Object> map, VertifyActivity.HttpCallBack callBack){
RequestParams params=new RequestParams(url);
Iterator<Map.Entry<String,Object>> it = map.entrySet().iterator();
while (it.hasNext()){
......@@ -36,56 +36,97 @@ public class HttpHolder {
else
params.addHeader("X-Auth-Token",String.valueOf(entry.getValue()));
}
x.http().post(params,callback);
x.http().post(params,callBack);
}
public static String upLoadFile(String path, final OnHttpListener listener){
String flg="";
public static void upLoadFile(String path, VertifyActivity.HttpCallBack callBack){
RequestParams params=new RequestParams(RequestConfig.UP_FILE);
params.setConnectTimeout(10000);
params.setReadTimeout(5000);
//创建List<KeyValue>对象
List<KeyValue> list = new ArrayList<>();
//给list中添加数据,filePah是上传的文件路径,比如sd卡中图片
list.add(new KeyValue("file", new File(path)));//文件流数据
// //其它参数,根据项目而定,比如我的项目中要传入的参数是json格式的
// list.add(new KeyValue("parameters", json.toString()));
//创建MultipartBody
MultipartBody body = new MultipartBody(list, "UTF-8");
//添加请求参数
params.setRequestBody(body);
//
File file=new File(path);
boolean flag=file.exists();
// params.addBodyParameter("file",file);
x.http().post(params,callBack);
};
x.http().post(params, new Callback.CommonCallback<String>() {
//创建记录
public static void createFileRecord(String url,Map<String,Object> map,Callback.CommonCallback<String> listener){
RequestParams params=new RequestParams(url);
Iterator<Map.Entry<String,Object>> it = map.entrySet().iterator();
while (it.hasNext()){
Map.Entry<String,Object> entry = it.next();
if(!"header".equals(entry.getKey()))
params.addBodyParameter(entry.getKey(),String.valueOf(entry.getValue()));
else
params.addHeader("X-Auth-Token",String.valueOf(entry.getValue()));
}
x.http().post(params,listener);
}
//批量导出
/**
*
* @param infos
* @param http
*/
public static void volumeExport(List<OcrRootBean.Superior> infos, final OnHttpListener http){
RequestParams params=new RequestParams(RequestConfig.BATCH_EXPORT_URL);
params.addHeader("X-Auth-Token","ocr");
String json= GsonUtil.getInstance().toJson(infos);
params.addBodyParameter("params",json);
x.http().get(params, new Callback.CommonCallback<String>() {
@Override
public void onSuccess(String result) {
String data=result;
listener.success(data);
http.success("",result);
}
@Override
public void onError(Throwable ex, boolean isOnCallback) {
Log.e(TAG, "onError: "+ex.getMessage(),ex );
listener.error(ex);
http.error("",ex);
}
@Override
public void onCancelled(CancelledException cex) {
}
@Override
public void onFinished() {
}
});
}
//批量删除
public static void volumeDelete(final List<OcrRootBean.Superior> list, final OnHttpListener listener){
JSONArray array= new JSONArray();
for(int i=0;i<list.size();i++)
array.put(list.get(i).getId());
RequestParams params=new RequestParams(RequestConfig.BATCH_DELETE_URL);
params.addBodyParameter("ids",array.toString());
return flg;
};
x.http().post(params, new Callback.CommonCallback<String>() {
@Override
public void onSuccess(String result) {
listener.success("delete",result);
}
@Override
public void onError(Throwable ex, boolean isOnCallback) {
listener.error("",ex);
}
@Override
public void onCancelled(CancelledException cex) {
}
@Override
public void onFinished() {
}
});
}
//单个下载
public static void downLoad(Map<String,String> map,MainHttpCallBack callBack){
RequestParams params=new RequestParams(RequestConfig.DOWN_LOAD_URL);
Iterator<Map.Entry<String,String>> it = map.entrySet().iterator();
while (it.hasNext()){
Map.Entry<String,String> entry = it.next();
params.addBodyParameter(entry.getKey(),String.valueOf(entry.getValue()));
}
x.http().get(params,callBack);
}
}
......@@ -6,7 +6,7 @@ package cn.com.bril.androidocr.studio.interf;
public interface OnHttpListener {
void success(String result);
void success(String type,String result);
void error(Throwable t);
void error(String type,Throwable t);
}
......@@ -59,4 +59,6 @@ public class BaseActivity extends AppCompatActivity {
private void dispatchBadLicense() {
showDialog( BaseActivity.DIALOG_BAD_LICENSE );
}
}
......@@ -5,12 +5,15 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
import cn.com.bril.androidocr.studio.R;
import cn.com.bril.androidocr.studio.beans.OcrInfo;
import cn.com.bril.androidocr.studio.beans.OcrRootBean;
/**
* Created by sunny on 2018-3-19.
......@@ -19,13 +22,35 @@ import cn.com.bril.androidocr.studio.beans.OcrInfo;
public class FragmentListAdapter extends BaseAdapter {
private Context context;
private List<OcrInfo> infos;
public FragmentListAdapter(Context context, List<OcrInfo> list) {
private List<OcrRootBean> infos;
private ListTextClickListener listTextClickListener;
private int show=View.GONE;
AdapterRadioSelectedListener radioSelectedListener;
public FragmentListAdapter(Context context, List<OcrRootBean> list, ListTextClickListener listTextClickListener, AdapterRadioSelectedListener radioSelectedListener) {
this.context=context;
this.infos=list;
this.listTextClickListener=listTextClickListener;
this.radioSelectedListener=radioSelectedListener;
}
public void setRadioShow(int show){
this.show=show;
notifyDataSetChanged();
}
public void setRadioAllSelected(boolean flg){
for(OcrRootBean info:infos)
info.getSuperior().setChecked(flg);
notifyDataSetChanged();
}
public List<OcrRootBean> getSelectedInfo(){
List<OcrRootBean> newInfos=new ArrayList<>();
for(OcrRootBean info:infos){
if(info.getSuperior().isChecked())
newInfos.add(info);
}
return newInfos;
}
@Override
public int getCount() {
return infos.size();
......@@ -43,24 +68,60 @@ public class FragmentListAdapter extends BaseAdapter {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
final ViewHolder holder;
if(convertView==null){
holder=new ViewHolder();
convertView= LayoutInflater.from(context).inflate(R.layout.listview_item_layout,null);
holder.title= (TextView)convertView .findViewById(R.id.title);
holder.time= (TextView) convertView.findViewById(R.id.time);
holder.radioButton= (CheckBox) convertView.findViewById(R.id.radio);
convertView.setTag(holder);
}else
holder= (ViewHolder) convertView.getTag();
OcrInfo info=infos.get(position);
holder.time.setText(info.getLastUpdateTime());
String fileName=info.getFileName().substring(0,info.getFileName().indexOf("."));
final OcrRootBean info=infos.get(position);
holder.time.setText(info.getSuperior().getCreateTime());
String s=info.getIncludes().getCc_file().getFileName();
String fileName;
if(s.contains("."))
fileName=s.substring(0,s.indexOf("."));
else
fileName=s;
holder.title.setText(fileName);
holder.title.setOnClickListener(new ListTextOnClickListener(position));
holder.radioButton.setVisibility(show);
holder.radioButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
info.getSuperior().setChecked(isChecked);
radioSelectedListener.adapterRadioSelectedCallBack();
notifyDataSetChanged();
}
});
holder.radioButton.setChecked(info.getSuperior().isChecked());
return convertView;
}
class ListTextOnClickListener implements View.OnClickListener{
int position;
public ListTextOnClickListener(int index) {
position=index;
}
@Override
public void onClick(View v) {
listTextClickListener.onListTextCallBack(infos.get(position));
}
}
public interface AdapterRadioSelectedListener{
void adapterRadioSelectedCallBack();
}
public interface ListTextClickListener{
void onListTextCallBack(OcrRootBean info);
}
class ViewHolder{
TextView title,time;
CheckBox radioButton;
}
}
......@@ -3,6 +3,7 @@ package cn.com.bril.androidocr.studio.ui.adapter;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.view.ViewGroup;
import java.util.List;
......@@ -13,12 +14,19 @@ import java.util.List;
public class TabFragmentPagerAdapter extends FragmentPagerAdapter {
List<Fragment> fragments;
List<String> tagList;
FragmentManager manager;
public TabFragmentPagerAdapter(FragmentManager fm, List<Fragment> fragments) {
super(fm);
manager=fm;
this.fragments=fragments;
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
@Override
public Fragment getItem(int position) {
return fragments.get(position);
......@@ -28,4 +36,12 @@ public class TabFragmentPagerAdapter extends FragmentPagerAdapter {
public int getCount() {
return fragments.size();
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
return super.instantiateItem(container, position);
}
}
......@@ -42,4 +42,22 @@ public class FileUtil {
return filePic.getAbsolutePath();
}
//判断文件是否存在
public static boolean isFileExist(String path){
try
{
File f=new File(path);
if(!f.exists())
{
return false;
}
}
catch (Exception e)
{
return false;
}
return true;
}
}
......@@ -66,4 +66,12 @@ public class ScreenUtil {
}
return windowPos;
}
//清晰度设置
public static void setBackgroundAlpha(Activity context, float bgAlpha)
{
WindowManager.LayoutParams lp = context.getWindow().getAttributes();
lp.alpha = bgAlpha; //0.0-1.0
context.getWindow().setAttributes(lp);
}
}
package cn.com.bril.androidocr.studio.utils;
import android.content.Context;
import android.app.Activity;
import android.content.Intent;
import android.media.MediaMetadataRetriever;
import android.net.Uri;
......@@ -15,16 +15,17 @@ import java.io.File;
public class ShareUtil {
// 調用系統方法分享文件
public static void shareFile(Context context, File file) {
public static void shareFile(Activity activity, File file) {
if (null != file && file.exists()) {
Intent share = new Intent(Intent.ACTION_SEND);
share.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
share.setType(getMimeType(file.getAbsolutePath()));//此处可发送多种文件
share.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
share.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
context.startActivity(Intent.createChooser(share, "分享文件"));
activity.startActivity(Intent.createChooser(share, "分享文件"));
// activity.startActivityForResult(share,0x00);
} else {
Toast.makeText(context,"分享文件不存在",Toast.LENGTH_SHORT).show();
Toast.makeText(activity,"分享文件不存在",Toast.LENGTH_SHORT).show();
}
}
......
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/normal" android:state_checked="true"/>
<item android:color="@color/tab_grey" android:state_checked="false"/>
<item android:color="@color/white" android:state_pressed="true"/>
<item android:color="@color/tab_grey" android:state_pressed="false"/>
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/bg_normal">
<include
android:id="@+id/header"
layout="@layout/top_title_layout"/>
<RelativeLayout
android:id="@+id/head_content"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<include
layout="@layout/top_title_layout"/>
<include
layout="@layout/bottom_tab_head_layout"
/>
</RelativeLayout>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fabbtn"
android:layout_width="wrap_content"
......@@ -22,18 +28,18 @@
android:src="@drawable/camera_icon"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_marginBottom="40dp"
android:layout_marginBottom="50dp"
android:layout_marginRight="20dp" />
<android.support.v4.view.ViewPager
<cn.com.bril.androidocr.studio.ui.widget.NoScrollViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/bottom_menu"
android:layout_below="@+id/header"/>
android:layout_below="@+id/head_content"/>
<LinearLayout
<RelativeLayout
android:id="@+id/bottom_menu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
......@@ -42,7 +48,10 @@
<include
layout="@layout/main_bottom_layout"
/>
</LinearLayout>
<include
layout="@layout/bottom_tab_layout"
/>
</RelativeLayout>
......
......@@ -77,7 +77,6 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:visibility="gone"
android:padding="10dp">
<TextView
......
......@@ -22,11 +22,12 @@
android:layout_toRightOf="@+id/icon">
<TextView
android:layout_width="match_parent"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:id="@+id/title"
android:textSize="@dimen/txt16sp"
android:focusable="false"
android:textColor="@color/txtcolor33"
android:text="新文档"/>
......@@ -38,8 +39,8 @@
android:gravity="center_vertical">
<ImageView
android:layout_width="30dp"
android:layout_height="20dp"
android:layout_width="15dp"
android:layout_height="10dp"
android:src="@drawable/date"/>
<TextView
android:id="@+id/time"
......@@ -52,6 +53,18 @@
</LinearLayout>
<CheckBox
android:id="@+id/radio"
android:layout_width="18dp"
android:layout_height="18dp"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:layout_marginRight="15dp"
android:button="@null"
android:focusable="false"
android:visibility="gone"
android:background="@drawable/radio_selector"/>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="49dp"
android:id="@+id/main_bottom_menu"
android:orientation="vertical"
android:background="@color/white"
android:layout_gravity="bottom"
......
......@@ -48,8 +48,9 @@
/>
<ImageView
android:id="@+id/right_iv"
android:layout_width="5dp"
android:layout_width="30dp"
android:layout_height="20dp"
android:scaleType="centerInside"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="20dp"
......
......@@ -4,6 +4,7 @@
<dimen name="txt18sp">18sp</dimen>
<dimen name="txt16sp">16sp</dimen>
<dimen name="txt14sp">14sp</dimen>
<dimen name="txt12sp">12sp</dimen>
<!-- 下拉刷新字体 -->
<dimen name="picture_pull_to_refresh_loading_text_size">14dp</dimen>
......
......@@ -4,8 +4,12 @@
<string name="back">返回</string>
<string name="export">导出</string>
<string name="recoginize">识别</string>
<string name="share">分享</string>
<string name="rename">重命名</string>
<string name="delete">删除</string>
<string name="rerecoginize">重新拍摄</string>
<string name="vertify">校对</string>
<string name="search_content">请输入要查询的内容</string>
<string name="vertify_content">
贵阳际会峰云会议服务有限公司倾力打造中国会议策划第一品牌;
专业提供会议整体策划、场地预定、场地搭建、印刷、礼品、会议接待、专车接待、视频会议等一系列会议服务。经过10年的历练,拥有非常专业的会议策划团队;
......
......@@ -20,4 +20,16 @@
<!--引入定义的menu主题-->
</style>
<style name="action_item">
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_weight">1</item>
<item name="android:gravity">center</item>
<item name="android:textSize">14sp</item>
<item name="android:drawablePadding">2dp</item>
<!--<item name="android:background">@drawable/bottom_nav_selector</item>-->
<item name="android:textColor">@color/white</item>
</style>
</resources>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment