实际上,我正在尝试为餐厅服务生制作应用程序,
现在,我添加了一些服务员可以将其添加到盘子的变体,但是现在我正尝试添加一个免费的变量,其中服务员可以手动绘制“ + Peperoni”之类的东西并将其发送到厨房。
我正在使用this库来绘制画布,现在要发送绘制的图像,我应该发送一个String,其中每一行都是一排像素,如果没有像素(白色像素),我应该发送0,并且有一个黑点,我应该发送1,而如果有一个白色的行以获得更好的性能,我什么都不应该发送。
我可以绘制的图像的最大Sime为512x360像素。
您是否对我可以做的事情有什么建议? 我是android的新手,所以我什至不知道从哪里开始写和类似的算法
这是我的CustomAlert中的代码,其中显示了图形布局:
public void drawAlert(){
final AlertDialog.Builder mBuilder = new AlertDialog.Builder(this);
@SuppressLint("InflateParams") View mView = getLayoutInflater().inflate(R.layout.alert_drawable, null);
ImageButton del = mView.findViewById(R.id.deleteDraw);
ImageButton draw = mView.findViewById(R.id.drawButton);
final RelativeLayout parentView = mView.findViewById(R.id.parentView);
final CanvasView canvasView = new CanvasView(this);
parentView.addView(canvasView);
mBuilder.setView(mView);
final AlertDialog dialog = mBuilder.create();
dialog.show();
// Here i was trying to make the bitmap as an Array of Bytes but the app crash
draw.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Bitmap bitmap = parentView.getDrawingCache();
ByteArrayOutputStream BAOS = null;
try {
BAOS = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG,100, BAOS);
byte [] b= BAOS.toByteArray();
String temp = Base64.encodeToString(b, Base64.DEFAULT);
Toast.makeText(pterm.this,temp,Toast.LENGTH_LONG).show();
BAOS.close();
} catch (IOException e) {
e.printStackTrace();
}
}
});
del.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
canvasView.clearCanvas();
}
});
}
当我按下“绘图”按钮时崩溃日志:
07-16 12:06:49.447 17910-17910 / com.example.igardini.visualposmobile E / AndroidRuntime:致命异常:main 流程:com.example.igardini.visualposmobile,PID:17910 java.lang.NullPointerException:尝试调用虚拟方法'boolean android.graphics.Bitmap.compress(android.graphics.Bitmap $ CompressFormat, int,java.io.OutputStream)'在空对象引用上 在com.example.igardini.visualposmobile.pterm $ 24.onClick(pterm.java:702) 在android.view.View.performClick(View.java:4781) 在android.view.View $ PerformClick.run(View.java:19874) 在android.os.Handler.handleCallback(Handler.java:739) 在android.os.Handler.dispatchMessage(Handler.java:95) 在android.os.Looper.loop(Looper.java:135) 在android.app.ActivityThread.main(ActivityThread.java:5290) 在java.lang.reflect.Method.invoke(本机方法) 在java.lang.reflect.Method.invoke(Method.java:372) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:911) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:706)