Commit f2cee8a5 by 宁斌

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	main/src/main/java/com/gingersoft/gsa/cloud/main/mvp/ui/activity/NewMainActivity.java
#	public-base/build.gradle
#	table-mode/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/BaseOrderPresenter.java
#	table-mode/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/MealStandPresenter.java
#	user-login/src/main/java/com/gingersoft/gsa/cloud/user/login/mvp/ui/activity/LoginActivity.java
parents 240616a2 b6f967f6
......@@ -4,60 +4,6 @@
package="com.gingersoft.gsa.cloud.main">
<uses-permission android:name="android.permission.INTERNET" />
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:resizeable="true"
android:smallScreens="true" />
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission
android:name="android.permission.ACCESS_MOCK_LOCATION"
tools:ignore="MockLocation" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<!-- <uses-permission android:name="android.permission.RESTART_PACKAGES" /> -->
<!-- <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> -->
<uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<!-- <uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> -->
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.VIBRATE" />
<!-- 使用照相机权限 -->
<uses-permission android:name="android.permission.REORDER_TASKS" />
<!-- 自动聚焦权限 -->
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<application>
<activity android:name=".mvp.ui.activity.NewMainActivity"/>
<activity android:name=".mvp.ui.activity.MainActivity"/>
......
......@@ -362,8 +362,8 @@ public class MainTopFragment extends BaseFragment<MainTopPresenter> implements M
lineChart.setShowChartName(false);
//底部不顯示顏色代表的意思
lineChart.getLegend().setDisplay(false);
lineChart.getMatrixHelper().setWidthMultiple(1.2f);
lineChart.getMatrixHelper().setCanZoom(true);
// lineChart.getMatrixHelper().setWidthMultiple(1f);
lineChart.getMatrixHelper().setCanZoom(false);
lineChart.getHorizontalAxis().setRotateAngle(0);//設置底部文字旋轉角度
lineChart.setFirstAnim(true);
lineChart.setChartData(chartData2);
......
......@@ -52,5 +52,4 @@ dependencies {
releaseImplementation rootProject.ext.dependencies["canary-release"]
testImplementation rootProject.ext.dependencies["canary-release"]
testImplementation rootProject.ext.dependencies["junit"]
implementation 'com.sunmi:printerlibrary:1.0.7'
}
......@@ -2,10 +2,16 @@
package="com.joe.print">
<application>
<activity android:name=".mvp.ui.activity.OldPrintActivity" android:theme="@style/print_TranslucentTheme"/>
<activity android:name=".mvp.ui.activity.PrintActivity" android:theme="@style/print_TranslucentTheme"/>
<activity android:name=".mvp.ui.activity.PrinterListActivity"/>
<activity android:name=".mvp.ui.activity.PrinterAddActivity"/>
<activity
android:name=".mvp.ui.activity.OldPrintActivity"
android:launchMode="singleTop"
android:theme="@style/print_TranslucentTheme" />
<activity
android:name=".mvp.ui.activity.PrintActivity"
android:launchMode="singleTop"
android:theme="@style/print_TranslucentTheme" />
<activity android:name=".mvp.ui.activity.PrinterListActivity" />
<activity android:name=".mvp.ui.activity.PrinterAddActivity" />
</application>
</manifest>
package com.joe.print.mvp.contract;
import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
import com.jess.arms.mvp.IView;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.jess.arms.mvp.IModel;
import com.jess.arms.mvp.IView;
import io.reactivex.Observable;
import okhttp3.RequestBody;
......@@ -23,7 +24,7 @@ import okhttp3.RequestBody;
public interface PrinterAddContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView {
void addPrinterSuccess();
void addPrinterSuccess(PrinterDeviceBean printerDeviceBean);
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
......
......@@ -88,7 +88,7 @@ public class PrinterAddPresenter extends BasePresenter<PrinterAddContract.Model,
@Override
public void onNext(BaseResult baseResult) {
if (baseResult.isSuccess()) {
mRootView.addPrinterSuccess();
mRootView.addPrinterSuccess(printerDeviceBean);
} else {
mRootView.showMessage("保存失敗");
}
......
......@@ -2,14 +2,17 @@ package com.joe.print.mvp.print;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Rect;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import am.util.printer.PrintDataMaker;
import am.util.printer.PrinterUtils;
import am.util.printer.PrinterWriter;
import am.util.printer.PrinterWriter58mm;
import am.util.printer.PrinterWriter80mm;
......@@ -24,7 +27,8 @@ public class SendPrint implements PrintDataMaker {
private int parting = 255;//高度分割值,
private int width; // 打印的圖片寬度,紙張寬度
private int printType;
public SendPrint(Context context, int parting, int width,int type) {
public SendPrint(Context context, int parting, int width, int type) {
this.mContext = context;
this.parting = parting;
this.width = width;
......@@ -33,6 +37,7 @@ public class SendPrint implements PrintDataMaker {
@Override
public List<byte[]> getPrintData(int type) {
ArrayList<byte[]> data = new ArrayList<>();
try {
PrinterWriter printer;
......@@ -46,7 +51,9 @@ public class SendPrint implements PrintDataMaker {
return null;
}
for (int i = 0; i < bitmaps.size(); i++) {
data.addAll(PrinterUtils.decodeBitmapToDataList(bitmaps.get(i), parting));
// printer.getImageByte(bitmaps.get(i));
// data.addAll(PrinterUtils.decodeBitmapToDataList(bitmaps.get(i), parting));
data.add(draw2PxPoint2(bitmaps.get(i)));
printer.printLineFeed();
printer.printLineFeed();
printer.printLineFeed();
......@@ -70,4 +77,250 @@ public class SendPrint implements PrintDataMaker {
return new ArrayList<>();
}
}
/*************************************************************************
     * 假设一个240*240的图片,分辨率设为24, 共分10行打印
     * 每一行,是一个 240*24 的点阵, 每一列有24个点,存储在3个byte里面。
     * 每个byte存储8个像素点信息。因为只有黑白两色,所以对应为1的位是黑色,对应为0的位是白色
     **************************************************************************/
/**
* 把一张Bitmap图片转化为打印机可以打印的字节流
*
* @param bmp
* @return
*/
public void draw2PxPoint(Bitmap bmp) throws IOException {
//用来存储转换后的 bitmap 数据。为什么要再加1000,这是为了应对当图片高度无法
//整除24时的情况。比如bitmap 分辨率为 240 * 250,占用 7500 byte,
//但是实际上要存储11行数据,每一行需要 24 * 240 / 8 =720byte 的空间。再加上一些指令存储的开销,
//所以多申请 1000byte 的空间是稳妥的,不然运行时会抛出数组访问越界的异常。
int size = bmp.getWidth() * bmp.getHeight() / 8 + 1000;
byte[] data = new byte[size];
int k = 0;
//设置行距为0的指令
data[k++] = 0x1B;
data[k++] = 0x33;
data[k++] = 0x00;
// 逐行打印
for (int j = 0; j < bmp.getHeight() / 24f; j++) {
//打印图片的指令
data[k++] = 0x1B;
data[k++] = 0x2A;
data[k++] = 33;
data[k++] = (byte) (bmp.getWidth() % 256); //nL
data[k++] = (byte) (bmp.getWidth() / 256); //nH
//对于每一行,逐列打印
for (int i = 0; i < bmp.getWidth(); i++) {
//每一列24个像素点,分为3个字节存储
for (int m = 0; m < 3; m++) {
//每个字节表示8个像素点,0表示白色,1表示黑色
for (int n = 0; n < 8; n++) {
byte b = px2Byte(i, j * 24 + m * 8 + n, bmp);
data[k] += data[k] + b;
}
k++;
}
}
data[k++] = 10;//换行
}
// socketOut.write(data);
// socketOut.flush();
}
/*************************************************************************
* 我们的热敏打印机是RP-POS80S或RP-POS80P或RP-POS80CS或RP-POS80CP打印机
* 360*360的图片,8个字节(8个像素点)是一个二进制,将二进制转化为十进制数值
* y轴:24个像素点为一组,即360就是15组(0-14)
* x轴:360个像素点(0-359)
* 里面的每一组(24*360),每8个像素点为一个二进制,(每组有3个,3*8=24)
**************************************************************************/
/**
* 把一张Bitmap图片转化为打印机可以打印的bit(将图片压缩为360*360)
* 效率很高(相对于下面)
* @param bit
* @return
*/
public static byte[] draw2PxPoint2(Bitmap bit) {
byte[] data = new byte[16290];
int k = 0;
for (int j = 0; j < 15; j++) {
data[k++] = 0x1B;
data[k++] = 0x2A;
data[k++] = 33; // m=33时,选择24点双密度打印,分辨率达到200DPI。
data[k++] = 0x68;
data[k++] = 0x01;
for (int i = 0; i < 360; i++) {
for (int m = 0; m < 3; m++) {
for (int n = 0; n < 8; n++) {
byte b = px2Byte(i, j * 24 + m * 8 + n, bit);
data[k] += data[k] + b;
}
k++;
}
}
data[k++] = 10;
}
return data;
}
/**
* 把一张Bitmap图片转化为打印机可以打印的bit
* @param bit
* @return
*/
public static byte[] pic2PxPoint(Bitmap bit){
long start = System.currentTimeMillis();
byte[] data = new byte[16290];
int k = 0;
for (int i = 0; i < 15; i++) {
data[k++] = 0x1B;
data[k++] = 0x2A;
data[k++] = 33; // m=33时,选择24点双密度打印,分辨率达到200DPI。
data[k++] = 0x68;
data[k++] = 0x01;
for (int x = 0; x < 360; x++) {
for (int m = 0; m < 3; m++) {
byte[] by = new byte[8];
for (int n = 0; n < 8; n++) {
byte b = px2Byte(x, i * 24 + m * 8 +7-n, bit);
by[n] = b;
}
data[k] = (byte) changePointPx1(by);
k++;
}
}
data[k++] = 10;
}
long end = System.currentTimeMillis();
long str = end - start;
return data;
}
/**
* 图片二值化,黑色是1,白色是0
* @param x 横坐标
* @param y 纵坐标
* @param bit 位图
* @return
*/
public static byte px2Byte(int x, int y, Bitmap bit) {
byte b;
int pixel = bit.getPixel(x, y);
int red = (pixel & 0x00ff0000) >> 16; // 取高两位
int green = (pixel & 0x0000ff00) >> 8; // 取中两位
int blue = pixel & 0x000000ff; // 取低两位
int gray = RGB2Gray(red, green, blue);
if ( gray < 128 ){
b = 1;
} else {
b = 0;
}
return b;
}
/**
* 图片灰度的转化
* @param r
* @param g
* @param b
* @return
*/
private static int RGB2Gray(int r, int g, int b){
int gray = (int) (0.29900 * r + 0.58700 * g + 0.11400 * b); //灰度转化公式
return gray;
}
/**
* 对图片进行压缩(去除透明度)
* @param bitmapOrg
*/
public static Bitmap compressPic(Bitmap bitmapOrg) {
// 获取这个图片的宽和高
int width = bitmapOrg.getWidth();
int height = bitmapOrg.getHeight();
// 定义预转换成的图片的宽度和高度
int newWidth = 360;
int newHeight = 360;
Bitmap targetBmp = Bitmap.createBitmap(newWidth, newHeight, Bitmap.Config.ARGB_8888);
Canvas targetCanvas = new Canvas(targetBmp);
targetCanvas.drawColor(0xffffffff);
targetCanvas.drawBitmap(bitmapOrg, new Rect(0, 0, width, height), new Rect(0, 0, newWidth, newHeight), null);
return targetBmp;
}
/**
* 对图片进行压缩(不去除透明度)
* @param bitmapOrg
*/
public static Bitmap compressBitmap(Bitmap bitmapOrg) {
// 加载需要操作的图片,这里是一张图片
// Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(),R.drawable.alipay);
// 获取这个图片的宽和高
int width = bitmapOrg.getWidth();
int height = bitmapOrg.getHeight();
// 定义预转换成的图片的宽度和高度
int newWidth = 360;
int newHeight = 360;
// 计算缩放率,新尺寸除原始尺寸
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) newHeight) / height;
// 创建操作图片用的matrix对象
Matrix matrix = new Matrix();
// 缩放图片动作
matrix.postScale(scaleWidth, scaleHeight);
// 创建新的图片
Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, 0, 0, width,height, matrix, true);
// 将上面创建的Bitmap转换成Drawable对象,使得其可以使用在ImageView, ImageButton中
// BitmapDrawable bmd = new BitmapDrawable(resizedBitmap);
return resizedBitmap;
}
/**
* 将[1,0,0,1,0,0,0,1]这样的二进制转为化十进制的数值(效率更高)
* @param arry
* @return
*/
public static int changePointPx1(byte[] arry){
int v = 0;
for (int j = 0; j <arry.length; j++) {
if( arry[j] == 1) {
v = v | 1 << j;
}
}
return v;
}
/**
* 将[1,0,0,1,0,0,0,1]这样的二进制转为化十进制的数值
* @param arry
* @return
*/
public byte changePointPx(byte[] arry){
byte v = 0;
for (int i = 0; i < 8; i++) {
v += v + arry[i];
}
return v;
}
/**
* 得到位图的某个点的像素值
* @param bitmap
* @return
*/
public byte[] getPicPx(Bitmap bitmap){
int[] pixels = new int[bitmap.getWidth() * bitmap.getHeight()];// 保存所有的像素的数组,图片宽×高
bitmap.getPixels(pixels, 0, bitmap.getWidth(), 0, 0, bitmap.getWidth(), bitmap.getHeight());
for (int i = 0; i < pixels.length; i++) {
int clr = pixels[i];
int red = (clr & 0x00ff0000) >> 16; // 取高两位
int green = (clr & 0x0000ff00) >> 8; // 取中两位
int blue = clr & 0x000000ff; // 取低两位
System.out.println("r=" + red + ",g=" + green + ",b=" + blue);
}
return null;
}
}
package com.joe.print.mvp.print;
import android.content.Context;
import android.graphics.Bitmap;
import android.os.RemoteException;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
import com.sunmi.peripheral.printer.InnerPrinterCallback;
import com.sunmi.peripheral.printer.InnerPrinterException;
import com.sunmi.peripheral.printer.InnerPrinterManager;
import com.sunmi.peripheral.printer.InnerResultCallbcak;
import com.sunmi.peripheral.printer.SunmiPrinterService;
/**
* Created by Wyh on 2020/2/10.
......@@ -25,57 +21,4 @@ public class SunMiPrint {
return false;
}
}
public static boolean printBitmap(Context context, Bitmap bitmap) {
return bindService(context, new InnerPrinterCallback() {
@Override
protected void onConnected(SunmiPrinterService service) {
//驗證打印機狀態
if (PrintStatus.initV2PrintStatus(context, service)) {
try {
//打印機狀態正常,開始打印圖片
service.printBitmap(bitmap, new InnerResultCallbcak() {
@Override
public void onRunResult(boolean isSuccess) {
//返回接⼝执⾏的情况(并⾮真实打印):成功或失败
if (isSuccess) {
ToastUtils.show(context, "打印成功");
} else {
ToastUtils.show(context, "打印失敗");
}
}
@Override
public void onReturnString(String result) {
//部分接⼝会异步返回查询数据
ToastUtils.show(context, "onReturnString:" + result);
}
@Override
public void onRaiseException(int code, String msg) {
//接⼝执⾏失败时,返回的异常状态
ToastUtils.show(context, "打印異常狀態碼:" + code + "---MSG:" + msg);
}
@Override
public void onPrintResult(int code, String msg) {
//事务模式下真实的打印结果返回
ToastUtils.show(context, "打印結果:" + code + "---MSG:" + msg);
}
});
} catch (RemoteException e) {
e.printStackTrace();
//如部分接⼝只能⽤于指定机型所以会跑出调⽤接⼝异常,如钱箱接⼝只能⽤于台式机
ToastUtils.show(context, "打印失敗" + "msg:" + e.getMessage());
}
}
}
@Override
protected void onDisconnected() {
ToastUtils.show(context, "斷開連接");
}
});
}
}
......@@ -6,11 +6,11 @@ import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.WindowManager;
import com.billy.cc.core.component.CC;
import com.billy.cc.core.component.CCResult;
import com.gingersoft.gsa.cloud.base.utils.other.TextUtil;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
import com.joe.print.mvp.print.SendPrint;
......@@ -31,13 +31,13 @@ public class OldPrintActivity extends Activity implements PrintSocketHolder.OnSt
private Dialog dialog;
private String callId;
/**
/**-
* 是否打印成功 true:成功
*/
private boolean printStatus = false;
private String ip;
private String port;
private Integer port;
private int paperType = 1;//打印紙類型 1:58mm,2::80mm
private int printWidth = 560;//打印出來的內容寬度
/**
......@@ -48,8 +48,11 @@ public class OldPrintActivity extends Activity implements PrintSocketHolder.OnSt
* 3:廚房單
*/
private int type = -1;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
| WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH);
super.onCreate(savedInstanceState);
getWindow().setBackgroundDrawable(null);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
......@@ -58,18 +61,21 @@ public class OldPrintActivity extends Activity implements PrintSocketHolder.OnSt
printOrder(this);
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
//點擊當前頁面任意地方自動關閉
finish();
return true;
}
private void initIntent() {
Intent intent = getIntent();
ip = intent.getStringExtra("ip");
port = intent.getStringExtra("port");
port = intent.getIntExtra("port", 0);
paperType = intent.getIntExtra("paperType", 1);
type = intent.getIntExtra("type", -1);
if (ip == null || ip.equals("")) {
ip = "192.168.1.217";
}
if (TextUtil.isEmptyOrNullOrUndefined(port) || port.equals("")) {
port = "0";
}
if (paperType == 1) {
paperType = PrinterWriter58mm.TYPE_58;
printWidth = 580 - 20;//兩邊留20的空隙
......@@ -87,14 +93,14 @@ public class OldPrintActivity extends Activity implements PrintSocketHolder.OnSt
dialog.setOnDismissListener(dialog -> dismiss(""));
dialog.setOnCancelListener(dialog -> dismiss(""));
if (executor == null) {
executor = new PrintExecutor(ip, Integer.parseInt(port), paperType);
executor = new PrintExecutor(ip, port, paperType);
executor.setOnStateChangedListener(this);
executor.setOnPrintResultListener(this);
}
if (maker == null) {
maker = new SendPrint(context, 255, printWidth, type);
}
executor.setIp(ip, Integer.parseInt(port));
executor.setIp(ip, port);
executor.doPrinterRequestAsync(maker);
executor.setReconnectTimes(3);
}
......@@ -156,7 +162,7 @@ public class OldPrintActivity extends Activity implements PrintSocketHolder.OnSt
private void dismiss(String msg) {
if(msg != null && !msg.equals("")){
if (msg != null && !msg.equals("")) {
ToastUtils.show(this, msg);
}
//延遲一秒
......
......@@ -7,15 +7,17 @@ import android.graphics.Bitmap;
import android.os.Build;
import android.os.Bundle;
import android.os.IBinder;
import android.os.Looper;
import android.os.RemoteException;
import android.util.Log;
import android.view.MotionEvent;
import android.view.WindowManager;
import com.billy.cc.core.component.CC;
import com.billy.cc.core.component.CCResult;
import com.billy.cc.core.component.CCUtil;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.common.bean.PrinterManger.PrinterManager;
import com.gingersoft.gsa.cloud.base.utils.AidlUtil;
import com.gingersoft.gsa.cloud.base.utils.constans.Constans;
import com.gingersoft.gsa.cloud.base.utils.other.SPUtils;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
......@@ -33,12 +35,11 @@ import com.joe.print.di.component.DaggerPrintComponent;
import com.joe.print.mvp.contract.PrintContract;
import com.joe.print.mvp.presenter.PrintPresenter;
import com.joe.print.mvp.print.PrintUtils;
import com.joe.print.mvp.print.SunMiPrint;
import com.joe.print.mvp.ui.adapter.DialogPrinterListAdapter;
import com.sunmi.peripheral.printer.InnerResultCallbcak;
import com.yanzhenjie.recyclerview.widget.DefaultItemDecoration;
import java.util.List;
import java.util.Objects;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
......@@ -73,11 +74,6 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
private int dialogCount = 0;
private DialogUtils selectDialog;
/**
* 商米:V2、V2_PRO N5:N5
*/
private String mV2 = "V2,V2_PRO";
private String mN5 = "N5";
/**
* 0:上菜紙
* 1:印單
* 2:結賬單
......@@ -85,6 +81,8 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
*/
private int type = -1;
public final static int ADD_PRINT_CODE = 1001;//添加打印機回調
@Override
public void setupActivityComponent(@NonNull AppComponent appComponent) {
DaggerPrintComponent //如找不到该类,请编译一下项目
......@@ -97,14 +95,52 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
@Override
public int initView(@Nullable Bundle savedInstanceState) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
| WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH);
return 0; //如果你不需要框架帮你设置 setContentView(id) 需要自行设置,请返回 0
}
int paperWidth = 500;
@Override
public void initData(@Nullable Bundle savedInstanceState) {
// if (mV2.contains(Build.MODEL)) {
//
// } else if (mN5.contains(Build.MODEL)) {
initPrint();
//獲取打印類型,根據打印類型生成對應的bitmap
type = CCUtil.getNavigateParam(this, "type", 1001);
//380 540
List<Bitmap> bitmaps = PrintUtils.getPrintBitmap(mContext, type, 360);
if (bitmaps.size() <= 0) {
printFile();
finish();
return;
}
// 獲得用戶默認的打印方式
// if (Objects.equals(SPUtils.get(mContext, Constans.DEFAULT_PRINT_METHOD, ""), "")) {
//如果沒有默認打印位置
// noDefaultPrintMethod(bitmaps);
// } else if (Objects.equals(SPUtils.get(mContext, Constans.DEFAULT_PRINT_METHOD, ""), Constans.LOCAL_PRINT)) {
//默認打印方式為本地,進行本地打印
for (int i = 0; i < bitmaps.size(); i++) {
locationPrint(bitmaps.get(i));
}
// } else if (Objects.equals(SPUtils.get(mContext, Constans.DEFAULT_PRINT_METHOD, ""), Constans.IP_PRINT)) {
//默認打印方式為ip打印,調用ip打印方法
// ipPrint();
// }
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
//doSomeTing,點擊當前頁面任意地方自動關閉
finish();
return true;
}
private void initPrint() {
if (GsaCloudApplication.mV2.contains(Build.MODEL)) {
paperWidth = 360;
} else if (GsaCloudApplication.mN5.contains(Build.MODEL)) {
paperWidth = 500;
try {
//初始化N5打印
int state = PrinterUtil.getStatus();
......@@ -116,33 +152,11 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
PrinterUtil.initPrinter(this);
} catch (NoInitPrinterException | RemoteException ex) {
ex.printStackTrace();
ToastUtils.show(mContext, "打印初始化失敗" + ex.getMessage());
Log.e("error", "打印初始化失敗:" + ex.getMessage());
}
} catch (RemoteException e){
ToastUtils.show(mContext, "獲取狀態失敗:" + e.getMessage());
} catch (RemoteException e) {
Log.e("error", "獲取狀態失敗:" + e.getMessage());
}
// }
type = CCUtil.getNavigateParam(this, "type", 1001);
List<Bitmap> bitmaps = PrintUtils.getPrintBitmap(mContext, type, 500);
if (bitmaps.size() <= 0) {
printFile();
finish();
return;
}
if (Objects.equals(SPUtils.get(mContext, Constans.DEFAULT_PRINT_METHOD, ""), "")) {
//如果沒有默認打印位置
noDefaultPrintMethod(bitmaps);
} else if (Objects.equals(SPUtils.get(mContext, Constans.DEFAULT_PRINT_METHOD, ""), Constans.LOCAL_PRINT)) {
//默認打印方式為本地,進行本地打印
for (int i = 0; i < bitmaps.size(); i++) {
locationPrint(bitmaps.get(i));
}
} else if (Objects.equals(SPUtils.get(mContext, Constans.DEFAULT_PRINT_METHOD, ""), Constans.IP_PRINT)) {
//默認打印方式為ip打印,調用ip打印方法
ipPrint();
}
}
......@@ -193,17 +207,40 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
return;
}
String model = Build.MODEL;
if (mV2.contains(model)) {
if (GsaCloudApplication.mV2.contains(model)) {
//商米打印
boolean isSuccess = SunMiPrint.printBitmap(mContext, bitmap);
AidlUtil.getInstance().printBitmap(bitmap, new InnerResultCallbcak() {
@Override
public void onRunResult(boolean isSuccess) {
//返回接⼝执⾏的情况(并⾮真实打印):成功或失败
if (isSuccess) {
ToastUtils.show(mContext, "商米打印機連接成功");
ToastUtils.show(mContext, "打印成功");
printSuccess();
} else {
ToastUtils.show(mContext, "商米打印機連接失敗");
ToastUtils.show(mContext, "打印失敗");
printFile();
}
} else if (mN5.contains(model)) {
}
@Override
public void onReturnString(String result) {
//部分接⼝会异步返回查询数据
ToastUtils.show(mContext, "onReturnString:" + result);
}
@Override
public void onRaiseException(int code, String msg) {
//接⼝执⾏失败时,返回的异常状态
ToastUtils.show(mContext, "打印異常狀態碼:" + code + "---MSG:" + msg);
}
@Override
public void onPrintResult(int code, String msg) {
//事务模式下真实的打印结果返回
ToastUtils.show(mContext, "打印結果:" + code + "---MSG:" + msg);
}
});
} else if (GsaCloudApplication.mN5.contains(model)) {
//N5打印
try {
try {
......@@ -216,6 +253,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
}
} catch (RemoteException e) {
e.printStackTrace();
Log.e("error", "打印失敗請重試RemoteException:" + e.getMessage());
printFile();
}
} else {
......@@ -229,9 +267,8 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
try {
PrinterUtil.startPrint(true, new IOnPrintCallback.Stub() {
@Override
public void onPrintResult(int i) throws RemoteException {
public void onPrintResult(int i) {
Log.e("error", "打印回調:" + i);
Looper.prepare();
if (i == 0) {
//打印成功
printSuccess();
......@@ -240,6 +277,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
printFile();
}
}
@Override
public IBinder asBinder() {
return this;
......@@ -247,35 +285,18 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
});
} catch (RemoteException e) {
e.printStackTrace();
}
}
private IOnPrintCallback mIOnPrintCallback = new IOnPrintCallback() {
@Override
public void onPrintResult(int i) {
Log.e("error", "打印回調:" + i);
Looper.prepare();
if (i == 0) {
//打印成功
ToastUtils.show(mContext, "N5打印結果:成功");
printSuccess();
} else {
//打印失敗
ToastUtils.show(mContext, "N5打印結果:失敗");
Log.e("error", "打印失敗請重試22222222222RemoteException:" + e.getMessage());
printFile();
}
}
@Override
public IBinder asBinder() {
return null;
}
};
/**
* 打印失敗
*/
private void printFile() {
String callId = CCUtil.getNavigateCallId(this);
Log.e("error", "PrintActivity :printFile" + callId);
CC.sendCCResult(callId, CCResult.error("print error"));
finish();
}
......@@ -285,6 +306,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
*/
private void printSuccess() {
String callId = CCUtil.getNavigateCallId(this);
Log.e("error", "PrintActivity :printSuccess" + callId);
CC.sendCCResult(callId, CCResult.success());
finish();
}
......@@ -352,27 +374,27 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
if (selectDialog != null && selectDialog.isShowing()) {
selectDialog.dismiss();
}
List<PrinterDeviceBean> deviceBeans = PrinterManager.getPrinterManager().getDeviceBeans();
if (deviceBeans != null) {
if (deviceBeans.size() == 1) {
//如果只配置了一個打印機,直接使用這個打印機進行打印
startToIpPrint(deviceBeans.get(0));
} else {
//有打印機,彈出彈窗,選擇打印機
new DialogUtils(mContext, R.layout.print_dialog_internet_list) {
@Override
public void initLayout(ViewHepler hepler, Dialog dialog) {
dialogCount++;
RecyclerView mRvPrintList = hepler.getView(R.id.rv_print_list);
List<PrinterDeviceBean> deviceBeans = PrinterManager.getPrinterManager().getDeviceBeans();
DialogPrinterListAdapter printListAdapter = new DialogPrinterListAdapter(deviceBeans, mContext);
mRvPrintList.setLayoutManager(new LinearLayoutManager(mContext));
//分割线
mRvPrintList.addItemDecoration(new DefaultItemDecoration(ContextCompat.getColor(mContext, R.color.line_color)));
mRvPrintList.setAdapter(printListAdapter);
printListAdapter.setOnItemClickListener((adapter, view, position) -> {
Intent intent = new Intent(mContext, OldPrintActivity.class);
intent.putExtra("ip", deviceBeans.get(position).getIp());
intent.putExtra("port", deviceBeans.get(position).getPort());
intent.putExtra("paperType", deviceBeans.get(position).getType());
intent.putExtra("type", type);
startActivity(intent);
startToIpPrint(deviceBeans.get(position));
dialog.dismiss();
finish();
});
dialog.setOnDismissListener(PrintActivity.this);
dialog.setOnCancelListener(dialog1 -> finish());
......@@ -382,6 +404,32 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
.createDialogView()
.show();
}
} else {
//沒有配置打印機
startActivityForResult(new Intent(mContext, PrinterAddActivity.class), ADD_PRINT_CODE);
}
}
private void startToIpPrint(PrinterDeviceBean deviceBean) {
Intent intent = new Intent(mContext, OldPrintActivity.class);
intent.putExtra("ip", deviceBean.getIp());
intent.putExtra("port", deviceBean.getPort());
intent.putExtra("paperType", deviceBean.getType());
intent.putExtra("type", type);
startActivity(intent);
finish();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == ADD_PRINT_CODE && resultCode == PrintActivity.ADD_PRINT_CODE) {
//添加打印機成功,
if (data != null && data.getSerializableExtra("printDevice") != null) {
startToIpPrint((PrinterDeviceBean) data.getSerializableExtra("printDevice"));
}
}
}
@Override
public void onDismiss(DialogInterface dialog) {
......
package com.joe.print.mvp.ui.activity;
/**
* Created by Wyh on 2020/3/6.
*/
import android.annotation.SuppressLint;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.charset.Charset;
public class PrintUtils {
private static final int LINE_BYTE_SIZE = 32;
private static OutputStream outputStream = null;
public static void setOutputStream(OutputStream outputStream) {
PrintUtils.outputStream = outputStream;
}
/**
* 打印文字
*
* @param text 要打印的文字
*/
public static void printText(String text) {
try {
byte[] data = text.getBytes("gbk");
outputStream.write(data, 0, data.length);
outputStream.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 设置打印格式
*
* @param command 格式指令
*/
public static void selectCommand(byte[] command) {
try {
outputStream.write(command);
outputStream.flush();
} catch (IOException e) {
//Toast.makeText(this.context, "发送失败!", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
}
/**
* 复位打印机
*/
public static final byte[] RESET = {0x1b, 0x40};
/**
* 左对齐
*/
public static final byte[] ALIGN_LEFT = {0x1b, 0x61, 0x00};
/**
* 中间对齐
*/
public static final byte[] ALIGN_CENTER = {0x1b, 0x61, 0x01};
/**
* 选择加粗模式
*/
public static final byte[] BOLD = {0x1b, 0x45, 0x01};
/**
* 取消加粗模式
*/
public static final byte[] BOLD_CANCEL = {0x1b, 0x45, 0x00};
/**
* 宽高加倍
*/
public static final byte[] DOUBLE_HEIGHT_WIDTH = {0x1d, 0x21, 0x11};
/**
* 字体不放大
*/
public static final byte[] NORMAL = {0x1d, 0x21, 0x00};
/**
* 设置默认行间距
*/
public static final byte[] LINE_SPACING_DEFAULT = {0x1b, 0x32};
// /**
// * 设置行间距
// */
public static final byte[] LINE_SPACING = {0x1b, 0x33, 0x50}; // 20的行间距(0,255)
/**
* 设置字符间距
*/
public static final byte[] COLUMN_SPACING = {0x1b, 0x20, 0x25};
/**
* 取消设置字符间距
*/
public static final byte[] COLUMN_SPACING_CANCEL = {0x1b, 0x20, 0x00};
/**
* 打印两列
*
* @param leftText 左侧文字
* @param rightText 右侧文字
* @return
*/
@SuppressLint("NewApi")
public static String printTwoData(String leftText, String rightText) {
StringBuilder sb = new StringBuilder();
int leftTextLength = getBytesLength(leftText);
int rightTextLength = getBytesLength(rightText);
sb.append(leftText);
// 计算两侧文字中间的空格
int marginBetweenMiddleAndRight = LINE_BYTE_SIZE - leftTextLength - rightTextLength;
for (int i = 0; i < marginBetweenMiddleAndRight; i++) {
sb.append(" ");
}
sb.append(rightText);
return sb.toString();
}
/**
* 获取数据长度
*
* @param msg
* @return
*/
@SuppressLint("NewApi")
private static int getBytesLength(String msg) {
return msg.getBytes(Charset.forName("GB2312")).length;
}
}
\ No newline at end of file
......@@ -204,9 +204,12 @@ public class PrinterAddActivity extends BaseActivity<PrinterAddPresenter> implem
}
@Override
public void addPrinterSuccess() {
public void addPrinterSuccess(PrinterDeviceBean printerDeviceBean) {
//添加或編輯打印機成功
showMessage("保存成功");
Intent data = new Intent();
data.putExtra("printDevice", printerDeviceBean);
setResult(PrintActivity.ADD_PRINT_CODE, data);
finish();
}
......
......@@ -87,5 +87,5 @@ dependencies {
//時間選擇控件
implementation 'org.aspectj:aspectjrt:1.8.9'
api files('libs/nexgon5lib.jar')
implementation files('libs/nexgon5lib.jar')
api 'com.sunmi:printerlibrary:1.0.7'
}
......@@ -2,6 +2,7 @@ package com.gingersoft.gsa.cloud.base.application;
import android.app.Activity;
import android.content.Context;
import android.os.Build;
import android.os.RemoteException;
import android.util.Log;
......@@ -18,6 +19,7 @@ import com.elvishew.xlog.printer.file.clean.FileLastModifiedCleanStrategy;
import com.elvishew.xlog.printer.file.naming.DateFileNameGenerator;
import com.gingersoft.gsa.cloud.base.BuildConfig;
import com.gingersoft.gsa.cloud.base.common.bean.CurrentAndroidSetting;
import com.gingersoft.gsa.cloud.base.utils.AidlUtil;
import com.gingersoft.gsa.cloud.base.utils.constans.UserConstans;
import com.gingersoft.gsa.cloud.base.utils.crash.AppCrashHandler;
import com.gingersoft.gsa.cloud.base.utils.file.FileUtils;
......@@ -66,6 +68,10 @@ public class GsaCloudApplication extends BaseApplication {
androidSetting = new CurrentAndroidSetting();
if (GsaCloudApplication.mV2.contains(Build.MODEL)) {
//商米打印
AidlUtil.getInstance().connectPrinterService(this);
} else if (GsaCloudApplication.mN5.contains(Build.MODEL)) {
try {
//初始化N5打印
PrinterUtil.initPrinter(this);
......@@ -74,6 +80,7 @@ public class GsaCloudApplication extends BaseApplication {
Log.e("error", "GsaCloudApplication打印初始化失敗:" + e.getMessage());
}
}
}
public Activity getCurrentActivity() {
return mCurrentActivity;
......
......@@ -88,7 +88,7 @@ public class MyOrderManage {
}
public Date getOpenTableTime() {
if (orderBean != null) {
if (orderBean != null && orderBean.getCreateTime() != null) {
return new Date(orderBean.getCreateTime());
}
return new Date();
......
package com.joe.print.mvp.print;
package com.gingersoft.gsa.cloud.base.utils;
import android.content.Context;
import android.graphics.Bitmap;
import android.os.RemoteException;
import android.widget.Toast;
import com.gingersoft.gsa.cloud.base.utils.LanguageUtils;
import com.gingersoft.gsa.cloud.base.utils.log.LogUtil;
import com.sunmi.peripheral.printer.ICallback;
import com.sunmi.peripheral.printer.InnerPrinterCallback;
import com.sunmi.peripheral.printer.InnerPrinterException;
import com.sunmi.peripheral.printer.InnerPrinterManager;
import com.sunmi.peripheral.printer.InnerResultCallbcak;
import com.sunmi.peripheral.printer.SunmiPrinterService;
......@@ -161,7 +160,7 @@ public class AidlUtil {
/*
*打印图片
*/
public void printBitmap(Bitmap bitmap) {
public void printBitmap(Bitmap bitmap,InnerResultCallbcak mInnerResultCallbcak) {
if (sunmiPrinterService == null) {
Toast.makeText(context, LanguageUtils.get_language_system(context, "server.disconnected", "未連接上打印機!"), Toast.LENGTH_LONG).show();
return;
......@@ -169,7 +168,7 @@ public class AidlUtil {
try {
sunmiPrinterService.setAlignment(1, null);
sunmiPrinterService.printBitmap(bitmap, null);
sunmiPrinterService.printBitmap(bitmap, mInnerResultCallbcak);
sunmiPrinterService.lineWrap(3, null);
} catch (RemoteException e) {
e.printStackTrace();
......
......@@ -3,13 +3,12 @@ package com.gingersoft.gsa.cloud.table.mvp.contract;
import android.app.Activity;
import android.widget.BaseAdapter;
import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.database.bean.ComboItem;
import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.database.bean.FoodCombo;
import com.gingersoft.gsa.cloud.database.bean.FoodModifier;
import com.gingersoft.gsa.cloud.database.bean.Modifier;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.BaseRespose;
import com.gingersoft.gsa.cloud.database.bean.Food;
import com.jess.arms.base.DefaultAdapter;
import java.util.List;
......@@ -37,6 +36,8 @@ public interface MealStandContract {
boolean isInitFineItemLayout();
int getRestaurantId();
void initFineItemTabBarViewPage();
void showFinePage();
......
......@@ -17,6 +17,7 @@ public class CreateOrderRequest {
private int person;
private int tableId;
private int restaurantId;
private Map<Long, List<OrderBean.OrderDetailsBean>> orderDetails;
public int getPerson() {
......@@ -35,6 +36,14 @@ public class CreateOrderRequest {
this.tableId = tableId;
}
public int getRestaurantId() {
return restaurantId;
}
public void setRestaurantId(int restaurantId) {
this.restaurantId = restaurantId;
}
public Map<Long, List<OrderBean.OrderDetailsBean>> getOrderDetails() {
return orderDetails;
}
......
......@@ -13,6 +13,7 @@ import com.gingersoft.gsa.cloud.table.mvp.model.bean.BillOrderMoney;
import com.gingersoft.gsa.cloud.base.common.bean.OrderDetail;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.AddOrderRequest;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.CreateOrderRequest;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.OrderRequest;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.OrderContentActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.OrderMoneyAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.SelectMealAdapter;
......@@ -26,7 +27,6 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.IdentityHashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
......
......@@ -346,7 +346,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
setOrderId((Double) info.getData());
}
mRootView.showMessage("送單成功");
printSendOrder(MyOrderManage.getInstance().getOrderFoodList());
printSendOrder(getOrderFoodLists());
IActivity.returnTableActivity(true);
} else {
mRootView.showMessage("送單失敗");
......
......@@ -419,6 +419,11 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen
}
@Override
public int getRestaurantId() {
return GsaCloudApplication.getRestaurantId(mContext);
}
@Override
public void initFineItemTabBarViewPage() {
fm = getSupportFragmentManager();
List<Fragment> fragmentList = new ArrayList<>();
......
......@@ -130,7 +130,7 @@ public class OrderContentActivity extends BaseActivity<OrderContentPresenter> im
String openTime = String.format("%tH:%tM", dd, dd);
String tableno = "";
if (!OpenTableManage.getDefault().isSplite()) {
if (!OpenTableManage.getDefault().isSplite() && OpenTableManage.getDefault().getTableBean() != null) {
tableno = OpenTableManage.getDefault().getTableBean().getTableName();
} else {//TODO 暫未分檯功能
// tableno = GSAApplication.tableContract.getTableno().trim() + "-" + GSAApplication.tableContract.getTableno_split().trim();
......
......@@ -10,7 +10,7 @@
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<application
android:name="com.gingersoft.gsa.cloud.base.application.GsaCloudApplication"
android:allowBackup="true"
......@@ -24,7 +24,6 @@
<activity
android:name=".mvp.ui.activity.LoginActivity"
android:windowSoftInputMode="adjustResize|stateHidden"
android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
......
......@@ -36,7 +36,6 @@ import com.jess.arms.base.BaseActivity;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.integration.AppManager;
import com.jess.arms.utils.ArmsUtils;
import com.tbruyelle.rxpermissions2.RxPermissions;
import java.io.IOException;
import java.util.ArrayList;
......@@ -90,7 +89,6 @@ public class LoginActivity extends BaseActivity<LoginPresenter> implements Login
@BindView(R2.id.ic_look_pwd)
ImageView mIvSeePwd;
private boolean passwrodVisibility = false;
@Override
......@@ -114,6 +112,7 @@ public class LoginActivity extends BaseActivity<LoginPresenter> implements Login
@Override
public int initView(@Nullable Bundle savedInstanceState) {
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
return R.layout.user_login_activity_login; //如果你不需要框架帮你设置 setContentView(id) 需要自行设置,请返回 0
}
......@@ -219,6 +218,7 @@ public class LoginActivity extends BaseActivity<LoginPresenter> implements Login
private void killBeforeActivty() {
List<Activity> activities = mAppManager.getActivityList();
for (int i = activities.size() - 1; i >= 0; i--) {
if (i < activities.size()) {
Activity activity = activities.get(i);
if (!activity.getClass().getName().equals(getClass().getName())) {
LogUtil.d(TAG, "killBeforeActivty: " + i + " - " + activity.getClass().getSimpleName());
......@@ -227,6 +227,7 @@ public class LoginActivity extends BaseActivity<LoginPresenter> implements Login
}
}
}
}
@Override
public void initIntent() {
......@@ -291,11 +292,8 @@ public class LoginActivity extends BaseActivity<LoginPresenter> implements Login
GsaCloudApplication.setBrandRestaurantInfos(this, "");
if (loginBean.getData() != null) {
GsaCloudApplication.setLoginToken(LoginActivity.this, loginBean.getData().getToken());
if (loginBean.getData().getUser() != null) {
GsaCloudApplication.setMemberId(LoginActivity.this, loginBean.getData().getUser().getUserId());
GsaCloudApplication.setMemberName(LoginActivity.this, loginBean.getData().getUser().getUserName());
......@@ -327,11 +325,11 @@ public class LoginActivity extends BaseActivity<LoginPresenter> implements Login
if (brandsBean != null) {
saveBrandAndRestaurantInfo(brandsBean.getBrandId(), brandsBean.getBrandName(), item.getId(), item.getText());
}
jumpDownloadActivity();
dialog.dismiss();
jumpDownloadActivity();
// killMyself();
}).build();
if (!isFinishing() && dialog1 != null && !dialog1.isShowing()) {
if (!isFinishing() && dialog1 != null && !dialog1.isShowing() && !isDestroy) {
dialog1.show();
}
}
......@@ -340,13 +338,16 @@ public class LoginActivity extends BaseActivity<LoginPresenter> implements Login
}
}
private boolean isDestroy = false;
@Override
protected void onDestroy() {
super.onDestroy();
Log.e("error", "登陸頁面銷毀:onDestroy");
// if (dialog != null) {
// dialog.dismiss();
// }
if (dialog1 != null) {
dialog1.dismiss();
}
isDestroy = true;
}
/**
......@@ -418,13 +419,8 @@ public class LoginActivity extends BaseActivity<LoginPresenter> implements Login
CC.obtainBuilder("Component.Download")
.setActionName("showDownloadActivity")
.build()
.callAsync(new IComponentCallback() {
@Override
public void onResult(CC cc, CCResult result) {
//此onResult在子线程中运行
boolean result2 = result.isSuccess();
}
});
.call();
killMyself();
}
private void jumpMainActivity() {
......
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?><!--<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"-->
<!-- xmlns:app="http://schemas.android.com/apk/res-auto"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="match_parent"-->
<!-- android:fillViewport="true">-->
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/theme_white_color"
android:clipChildren="true"
android:orientation="vertical">
<TextView
......@@ -118,8 +124,8 @@
android:layout_width="@dimen/dp_30"
android:layout_height="@dimen/dp_30"
android:padding="@dimen/dp_5"
android:visibility="gone"
android:src="@mipmap/ic_password_hide"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@id/ed_login_user_pwd"
app:layout_constraintRight_toLeftOf="@id/iv_clear_pwd"
app:layout_constraintTop_toTopOf="@id/ed_login_user_pwd" />
......@@ -167,12 +173,11 @@
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dp_10"
android:text="v1.0"
android:textSize="16dp"
android:textSize="@dimen/sp_16"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.95" />
app:layout_constraintRight_toRightOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout><!--</ScrollView>-->
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