diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml new file mode 100644 index 0000000..4bd28f7 --- /dev/null +++ b/.idea/deploymentTargetDropDown.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 12da9f6..ea50480 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -5,6 +5,14 @@ + + + + + + + + diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintCanvas.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintCanvas.java index 4e811a4..f9d5aea 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintCanvas.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintCanvas.java @@ -1,10 +1,12 @@ package org.ntlab.acanthus_client.views.paint; import android.content.Context; +import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; +import android.os.Build; import android.util.AttributeSet; import android.util.Log; import android.view.MotionEvent; @@ -16,12 +18,23 @@ import org.ntlab.acanthus_client.resources.HelloWorldRest; import org.ntlab.acanthus_client.resources.gallery.StrokesRest; +import java.io.BufferedWriter; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.FileWriter; +import java.io.IOException; +import java.io.PrintWriter; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; +import java.util.Base64; import java.util.List; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.TimeUnit; import androidx.annotation.Nullable; +import androidx.annotation.RequiresApi; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; @@ -34,7 +47,7 @@ //----------------------------------------------------------------- // 描画キャンバスの本体 -public class PaintCanvas extends View implements Runnable{ +public class PaintCanvas extends View implements Runnable { private Path path; private Path path2; @@ -42,7 +55,10 @@ private Paint paint2; private PaintViewModel paintViewModel; private ScheduledThreadPoolExecutor thread = new ScheduledThreadPoolExecutor(1); - private int localstrokeNo=0; + private int localstrokeNo = 0; + private Canvas canvas; + private Bitmap image; + //----------------------------------------------------------------- //----------------------------------------------------------------- public PaintCanvas(Context context, @Nullable AttributeSet attrs) { @@ -59,6 +75,9 @@ paint2.setStyle(Paint.Style.STROKE);//線をひく paint2.setStrokeWidth(20);//幅 thread.scheduleWithFixedDelay(this, 1000L, 2000L, TimeUnit.MILLISECONDS); + image = Bitmap.createBitmap(640, 480, Bitmap.Config.ARGB_8888); + canvas = new Canvas(image); + invalidate(); } //----------------------------------------------------------------- @@ -73,6 +92,7 @@ @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); + //canvas.setBitmap(image); canvas.drawPath(path, paint); canvas.drawPath(path2, paint2); } @@ -91,14 +111,14 @@ Log.d("motion", "+++++++++++++++++++++++++++++++++++++++down======================================================"); onTouched(x, y); paintViewModel.setmStrokeNo(); - paintViewModel.addLocalStrokeRequest(x,y); + paintViewModel.addLocalStrokeRequest(x, y); //paintViewModel.addPositionLocal(x, y); break; case MotionEvent.ACTION_MOVE: Log.d("motion", "move"); onTouchedMove(x, y); - paintViewModel.addPositionRequest(x,y); + paintViewModel.addPositionRequest(x, y); break; case MotionEvent.ACTION_UP: @@ -160,10 +180,10 @@ for (Position p : s.getPositions()) { if (cnt == 0) { onTouched2(p.getX(), p.getY()); - } else{ - if(p.getX()==-1){ + } else { + if (p.getX() == -1) { - }else { + } else { onTouchedMove2(p.getX(), p.getY()); } } @@ -174,6 +194,22 @@ paintViewModel.deleteStroke(); } + @RequiresApi(api = Build.VERSION_CODES.O) + public void canvassc(Bitmap image) { + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + image.compress(Bitmap.CompressFormat.PNG, 100, stream); + byte[] byteArray = stream.toByteArray(); + image.recycle(); + byte[] a = Base64.getEncoder().encode(byteArray); + Log.d("motion", "=====================================up======================================================"); + Log.d("motion", "=====================================up======================================================"); + Log.d("byteimage", "canvassc: " + a.toString()); + } + + public Bitmap getBitmapimg() { + return this.image; + } + // 一定間隔でサーバー上の筆跡を取得する(GET) @Override public void run() { diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintToolBar.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintToolBar.java index 006c203..b46cb6f 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintToolBar.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintToolBar.java @@ -21,10 +21,9 @@ //----------------------------------------------------------------- //----------------------------------------------------------------- - public PaintToolBar(AppCompatActivity appCompatActivity, PaintCanvas paintCanvas) { - this.bottomNavigationView = (BottomNavigationView) appCompatActivity.findViewById(R.id.navPaint); - - setNavigationListener(appCompatActivity, paintCanvas); + public PaintToolBar(PaintActivity paintActivity, PaintCanvas paintCanvas) { + this.bottomNavigationView = (BottomNavigationView) paintActivity.findViewById(R.id.navPaint); + setNavigationListener(paintActivity, paintCanvas); } //----------------------------------------------------------------- @@ -52,6 +51,7 @@ //----------------------------------------------------------------- case R.id.navigation_page: + paintCanvas.canvassc(paintCanvas.getBitmapimg()); transitionPageActivity(appCompatActivity); return true; diff --git a/app/src/main/res/layout/activity_paint.xml b/app/src/main/res/layout/activity_paint.xml index 7befaa3..17cb285 100644 --- a/app/src/main/res/layout/activity_paint.xml +++ b/app/src/main/res/layout/activity_paint.xml @@ -81,10 +81,11 @@ android:layout_width="410dp" android:layout_height="54dp" android:background="#FFFFFF" + app:labelVisibilityMode="labeled" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintHorizontal_bias="1.0" app:layout_constraintStart_toStartOf="parent" - app:labelVisibilityMode="labeled" app:menu="@menu/bottom_nav_paint" />