diff --git a/app/build.gradle b/app/build.gradle index ea4889a..9f58f4e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -12,7 +12,7 @@ android { targetSdkVersion 26 versionCode 112 versionName "2.1.0" - buildConfigField "String", "APP_BUILD_TIME", "\"Mon, 09 October. 2017 \"" // build time + buildConfigField "String", "APP_BUILD_TIME", "\"Fri, 13 October. 2017 \"" // build time testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" externalNativeBuild { cmake { diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 0977e9f..bff6596 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -58,6 +58,7 @@ public static java.lang.String TABLENAME; -dontwarn okhttp3.** -dontwarn okio.** -dontwarn javax.annotation.** + -keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase #addtionally added to solve campus card consumption bug ### https://github.com/Yalantis/uCrop -dontwarn com.yalantis.ucrop** diff --git a/app/src/main/java/me/gensh/fragments/CampusNetworkFragment.java b/app/src/main/java/me/gensh/fragments/CampusNetworkFragment.java index df8c8c9..dbf0256 100644 --- a/app/src/main/java/me/gensh/fragments/CampusNetworkFragment.java +++ b/app/src/main/java/me/gensh/fragments/CampusNetworkFragment.java @@ -21,6 +21,7 @@ import java.io.RandomAccessFile; import java.text.DecimalFormat; import java.util.ArrayList; +import java.util.Arrays; import java.util.Calendar; import me.gensh.helloustb.R; @@ -143,8 +144,12 @@ private String[] getWeekAxis(Calendar calendar_now) { return new_week; } - private static float[] calcVariance(Calendar calendar_now, float today_flow) { + private float[] calcVariance(Calendar calendar_now, float today_flow) { float[] data = M(calendar_now, today_flow); + + System.out.println("<<<<<<<<<<<<<" + today_flow); + System.out.println(Arrays.toString(data)); + float[] variance = new float[DATA_LENGTH - 1]; int day_counter = calendar_now.get(Calendar.DAY_OF_MONTH) - 1; for (int i = DATA_LENGTH - 2; i >= 0; i--) { @@ -158,9 +163,10 @@ private static float[] calcVariance(Calendar calendar_now, float today_flow) { return variance; } - public static float[] M(Calendar calendar_now, float todayFlow) { + public float[] M(Calendar calendar_now, float todayFlow) { float[] flowData = new float[]{0, 0, 0, 0, 0, 0, 0, 0}; - File file = new File(FILE_PATH); + + File file = new File(getActivity().getFilesDir(), FILE_PATH); if (file.exists() && file.length() == 38) { try { RandomAccessFile random_f = new RandomAccessFile(file, "rw"); diff --git a/app/src/main/java/me/gensh/helloustb/About.java b/app/src/main/java/me/gensh/helloustb/About.java index 70783dc..c12c300 100644 --- a/app/src/main/java/me/gensh/helloustb/About.java +++ b/app/src/main/java/me/gensh/helloustb/About.java @@ -13,8 +13,11 @@ import android.support.v7.widget.Toolbar; import android.view.MenuItem; import android.view.View; +import android.widget.ImageView; import android.widget.Toast; +import java.util.Random; + import me.gensh.network.VersionCheckerTask; import me.gensh.service.ApkDownloadIntentService; import permissions.dispatcher.NeedsPermission; @@ -34,7 +37,6 @@ protected void onCreate(Bundle savedInstanceState) { setContentView(R.layout.activity_about); Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); - getSupportActionBar().setDisplayShowHomeEnabled(true); setVersion(); } @@ -80,7 +82,7 @@ public void onAttemptToDownload(long packageSize, int newVersionCode, String new @NeedsPermission({Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}) public void startDownload(long packageSize, int newVersionCode, String newVersionName) { Toast.makeText(this, R.string.update_downloading, Toast.LENGTH_SHORT).show(); - ApkDownloadIntentService.startActionDownloadApk(this, packageSize, newVersionCode,newVersionName); + ApkDownloadIntentService.startActionDownloadApk(this, packageSize, newVersionCode, newVersionName); } @OnShowRationale({Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}) @@ -118,9 +120,27 @@ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permis AboutPermissionsDispatcher.onRequestPermissionsResult(this, requestCode, grantResults); } + final static private short TURN = 4; + final static private short ICON_COUNT = 8; + final static private int[] icons = {R.drawable.play_1, R.drawable.play_2, R.drawable.play_3, + R.drawable.play_4, R.drawable.play_5, R.drawable.play_6, R.drawable.play_7, R.drawable.play_8}; + private short iconClickCounter = 0; + Random random = new Random(); + public void clickHandle(View view) { int id = view.getId(); switch (id) { + case R.id.about_header_container: + iconClickCounter++; + if (iconClickCounter == TURN) { + ImageView appIcon = findViewById(R.id.app_icon); + int index = random.nextInt(ICON_COUNT); //ic_launcher is also needed ? + appIcon.setImageResource(icons[index]); // 0 to ICON_COUNT-1 + iconClickCounter = 0; + } /*else { //1,2,3,TURN-1 + Snackbar.make(view, getString(R.string.about_play_snack, TURN - iconClickCounter), Snackbar.LENGTH_SHORT).show(); + }*/ + break; case R.id.check_update: checker = new VersionCheckerTask(getString(R.string.UpdateAddress), this, false); checker.execute(); diff --git a/app/src/main/java/me/gensh/helloustb/CampusCardConsumption.java b/app/src/main/java/me/gensh/helloustb/CampusCardConsumption.java index c7ed4be..9ba45f8 100644 --- a/app/src/main/java/me/gensh/helloustb/CampusCardConsumption.java +++ b/app/src/main/java/me/gensh/helloustb/CampusCardConsumption.java @@ -56,7 +56,6 @@ protected void onCreate(Bundle savedInstanceState) { mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); mAdapter = new CampusCardAdapter(campusCardDataList); mRecyclerView.setAdapter(mAdapter); - mRecyclerView.setEmptyView(R.layout.list_empty_view, (ViewGroup) findViewById(R.id.recycle_view_container), true); fab.setOnClickListener(new View.OnClickListener() { @Override @@ -107,6 +106,11 @@ public void onOk(int what, @NonNull ArrayList data) { attemptHttpRequest(HttpClients.HTTP_GET, getString(R.string.campus_card_query_link), Tags.E, 0x102, Tags.GET.ID_E_CAMPUS_CARD, HttpClients.CHARSET_BTF8, null, false); } else if (what == 0x102) { dismissProgressDialog(); + /** todo bugs at:{@link HttpClients#newInstance }*/ +// if (campusCardDataList != null) { +// campusCardDataList.clear(); +// } + int size = data.size() / 4; for (int i = 0; i < size; i++) { if (data.get(4 * i).isEmpty() || data.get(4 * i + 1).isEmpty() || @@ -114,7 +118,6 @@ public void onOk(int what, @NonNull ArrayList data) { //filter empty content. continue; } - System.out.println(data.get(4 * i)); SparseArray stringSparseArray = new SparseArray<>(); stringSparseArray.put(CAMPUS_CARD_CONSUME_TAG_TIME, data.get(4 * i)); stringSparseArray.put(CAMPUS_CARD_CONSUME_TAG_PLACE, data.get(4 * i + 1)); @@ -122,6 +125,9 @@ public void onOk(int what, @NonNull ArrayList data) { stringSparseArray.put(CAMPUS_CARD_CONSUME_TAG_LEFT, data.get(4 * i + 3)); campusCardDataList.add(stringSparseArray); } + if (!mRecyclerView.hasEmptyView()) { + mRecyclerView.setEmptyView(R.layout.list_empty_view, (ViewGroup) findViewById(R.id.recycle_view_container), false); + } mAdapter.notifyDataSetChanged(); } } @@ -130,15 +136,20 @@ public void onOk(int what, @NonNull ArrayList data) { public void onPasswordError() { dismissProgressDialog(); Snackbar.make(fab, R.string.error_password, Snackbar.LENGTH_LONG).setAction("Action", null).show(); + if (!mRecyclerView.hasEmptyView()) { + mRecyclerView.setEmptyView(R.layout.list_empty_view, (ViewGroup) findViewById(R.id.recycle_view_container), false); + } } @Override public void onTimeoutError() { dismissProgressDialog(); Snackbar.make(fab, R.string.connection_timeout, Snackbar.LENGTH_LONG).setAction("Action", null).show(); + if (!mRecyclerView.hasEmptyView()) { + mRecyclerView.setEmptyView(R.layout.list_empty_view, (ViewGroup) findViewById(R.id.recycle_view_container), false); + } } - // private class CampusCardAdapter extends RecyclerViewWithEmptySupport.Adapter { List> data; @@ -156,9 +167,9 @@ public CampusCardAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int vie public void onBindViewHolder(CampusCardAdapter.ViewHolder holder, int position) { SparseArray item = data.get(position); holder.consumePlace.setText(item.get(CAMPUS_CARD_CONSUME_TAG_PLACE)); + holder.consumeMoney.setText(getString(R.string.campus_card_consum_moey, item.get(CAMPUS_CARD_CONSUME_TAG_MONEY))); + holder.consumeLeft.setText(getString(R.string.campus_card_consum_left, item.get(CAMPUS_CARD_CONSUME_TAG_LEFT))); holder.consumeTime.setText(item.get(CAMPUS_CARD_CONSUME_TAG_TIME)); - holder.consumeMoney.setText(item.get(CAMPUS_CARD_CONSUME_TAG_MONEY)); - holder.consumeLeft.setText(item.get(CAMPUS_CARD_CONSUME_TAG_LEFT)); holder.tagImage.setImageResource(StringUtils.getConsumptionTypeResourceByPlace(item.get(CAMPUS_CARD_CONSUME_TAG_PLACE))); } diff --git a/app/src/main/java/me/gensh/views/RecyclerViewWithEmptySupport.java b/app/src/main/java/me/gensh/views/RecyclerViewWithEmptySupport.java index 2abeee6..a75b1ba 100644 --- a/app/src/main/java/me/gensh/views/RecyclerViewWithEmptySupport.java +++ b/app/src/main/java/me/gensh/views/RecyclerViewWithEmptySupport.java @@ -89,4 +89,8 @@ public void setEmptyView(@LayoutRes int emptyViewLayout, ViewGroup parent, boole this.emptyView = view; checkIfEmpty(); } + + public boolean hasEmptyView() { + return emptyView != null; + } } diff --git a/app/src/main/res/drawable-xxhdpi/play_1.png b/app/src/main/res/drawable-xxhdpi/play_1.png new file mode 100644 index 0000000..cfcde0f Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/play_1.png differ diff --git a/app/src/main/res/drawable-xxhdpi/play_2.png b/app/src/main/res/drawable-xxhdpi/play_2.png new file mode 100644 index 0000000..809e4c1 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/play_2.png differ diff --git a/app/src/main/res/drawable-xxhdpi/play_3.png b/app/src/main/res/drawable-xxhdpi/play_3.png new file mode 100644 index 0000000..90496da Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/play_3.png differ diff --git a/app/src/main/res/drawable-xxhdpi/play_4.png b/app/src/main/res/drawable-xxhdpi/play_4.png new file mode 100644 index 0000000..24deac6 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/play_4.png differ diff --git a/app/src/main/res/drawable-xxhdpi/play_5.png b/app/src/main/res/drawable-xxhdpi/play_5.png new file mode 100644 index 0000000..0af3fde Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/play_5.png differ diff --git a/app/src/main/res/drawable-xxhdpi/play_6.png b/app/src/main/res/drawable-xxhdpi/play_6.png new file mode 100644 index 0000000..437548e Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/play_6.png differ diff --git a/app/src/main/res/drawable-xxhdpi/play_7.png b/app/src/main/res/drawable-xxhdpi/play_7.png new file mode 100644 index 0000000..441de81 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/play_7.png differ diff --git a/app/src/main/res/drawable-xxhdpi/play_8.png b/app/src/main/res/drawable-xxhdpi/play_8.png new file mode 100644 index 0000000..29dface Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/play_8.png differ diff --git a/app/src/main/res/drawable/ic_nodata_common.xml b/app/src/main/res/drawable/ic_nodata_common.xml new file mode 100644 index 0000000..a38f8fe --- /dev/null +++ b/app/src/main/res/drawable/ic_nodata_common.xml @@ -0,0 +1,81 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/content_about.xml b/app/src/main/res/layout/content_about.xml index e7378e1..62ef03b 100644 --- a/app/src/main/res/layout/content_about.xml +++ b/app/src/main/res/layout/content_about.xml @@ -13,16 +13,17 @@ android:layout_height="match_parent" android:orientation="vertical"> - - + android:layout_height="wrap_content" + android:onClick="clickHandle" + android:clickable="true" + android:paddingTop="20dp" + android:paddingBottom="20dp"> - - - + - \ No newline at end of file + android:layout_centerInParent="true" + android:text="@string/empty_common_no_data"/> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/recycle_view_campus_card.xml b/app/src/main/res/layout/recycle_view_campus_card.xml index 14e8263..46d9ada 100644 --- a/app/src/main/res/layout/recycle_view_campus_card.xml +++ b/app/src/main/res/layout/recycle_view_campus_card.xml @@ -24,22 +24,23 @@ android:layout_height="wrap_content" /> + android:layout_below="@+id/campus_card_consume_place" /> + android:layout_below="@+id/campus_card_consume_money" /> + + android:layout_below="@+id/campus_card_consume_left" /> diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index 83d8328..e7112c2 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -97,6 +97,9 @@ 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 请输入登录账号 + + 暂无相关数据… + 正在后台下载更新包,下载完成后将会通知您安装 @@ -143,6 +146,7 @@ 关于 + Closer:%d 检查更新 开源许可 file:///android_asset/open_source.html @@ -198,6 +202,7 @@ 启用备用域名 + 网络请求超时,试试启用备用域名?(右上角开启). 检索 请键入检索内容 检索 @@ -401,6 +406,12 @@ 点击登陆%s 登录校园网 + + + 消费:%s + 余额:%s + + 账号管理 消息中心 diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 4835bcc..0cb7885 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -39,6 +39,10 @@ 6dp + + 150dp + 180dp + 6dp 10dp diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1c24382..043ef83 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -98,6 +98,9 @@ 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ Please input account + + No data here… + 正在后台下载更新包,下载完成后将会通知您安装 @@ -144,6 +147,7 @@ 关于 + Closer:%d 检查更新 开源许可 file:///android_asset/open_source.html @@ -253,6 +257,7 @@ Use alternate domain + Network request time out,maybe using alternate domain(open it at upper right corner) can helps. 检索 请键入检索内容 检索 @@ -456,6 +461,12 @@ 点击登陆%s 登录校园网 + + + Cost:%s + Left:%s + + Accounts Manager Messages diff --git a/http-ustb/src/main/java/me/gensh/helloustb/http/HttpClients.java b/http-ustb/src/main/java/me/gensh/helloustb/http/HttpClients.java index 11d9022..0afb9b0 100644 --- a/http-ustb/src/main/java/me/gensh/helloustb/http/HttpClients.java +++ b/http-ustb/src/main/java/me/gensh/helloustb/http/HttpClients.java @@ -48,6 +48,8 @@ public synchronized static HttpClients newInstance(int timeoutCon, int timeoutRe @Override public synchronized void saveFromResponse(HttpUrl url, List cookies) { cookieStore.put(url.host(), cookies); + /** todo cookie manager: put method would clear previous Cookies, + * which will lead an empty data in http://e.ustb.edu.cn/index.portal?.pn=p378_p381.*/ } @Override