diff --git a/.idea/misc.xml b/.idea/misc.xml index c429bf3..c207fa1 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -5,7 +5,9 @@ + + @@ -19,6 +21,7 @@ + diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintActivity.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintActivity.java index 2a6979c..c14a52c 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintActivity.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintActivity.java @@ -26,7 +26,7 @@ private PaintToolBar paintToolBar; - private PaintScreenShot paintScreenShot; + // private PaintScreenShot paintScreenShot; private ActivityPaintBinding binding; private PaintViewModel paintViewModel; @@ -38,7 +38,7 @@ public void onDestroy() { super.onDestroy(); paintViewModel.stop(); - paintScreenShot.onDestroy(); + // paintScreenShot.onDestroy(); } //----------------------------------------------------------------- @@ -51,26 +51,26 @@ //paintScreenShot.onCreate(); - Button button = findViewById(R.id.button_keep); - button.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - //bottonタップで表示されてたら非表示にする。 - if (buttonView) { - findViewById(R.id.capture).setVisibility(View.INVISIBLE); - findViewById(R.id.image).setVisibility(View.INVISIBLE); - findViewById(R.id.textView3).setVisibility(View.INVISIBLE); - - buttonView = false; - } else { - findViewById(R.id.capture).setVisibility(View.VISIBLE); - findViewById(R.id.image).setVisibility(View.VISIBLE); - findViewById(R.id.textView3).setVisibility(View.VISIBLE); - - buttonView = true; - } - } - }); +// Button button = findViewById(R.id.button_keep); +// button.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View v) { +// //bottonタップで表示されてたら非表示にする。 +// if (buttonView) { +// findViewById(R.id.capture).setVisibility(View.INVISIBLE); +// findViewById(R.id.image).setVisibility(View.INVISIBLE); +// findViewById(R.id.textView3).setVisibility(View.INVISIBLE); +// +// buttonView = false; +// } else { +// findViewById(R.id.capture).setVisibility(View.VISIBLE); +// findViewById(R.id.image).setVisibility(View.VISIBLE); +// findViewById(R.id.textView3).setVisibility(View.VISIBLE); +// +// buttonView = true; +// } +// } +// }); } //----------------------------------------------------------------- @@ -117,12 +117,12 @@ paintOnionCanvas = findViewById(R.id.paintOnionCanvas); paintOnionCanvas.init(paintViewModel); - paintScreenShot = new PaintScreenShot(this); + // paintScreenShot = new PaintScreenShot(this); paintToolBar = new PaintToolBar(this, paintCanvas); - findViewById(R.id.capture).setVisibility(View.INVISIBLE); - findViewById(R.id.image).setVisibility(View.INVISIBLE); - findViewById(R.id.textView3).setVisibility(View.INVISIBLE); +// findViewById(R.id.capture).setVisibility(View.INVISIBLE); +// findViewById(R.id.image).setVisibility(View.INVISIBLE); +// findViewById(R.id.textView3).setVisibility(View.INVISIBLE); } //----------------------------------------------------------------- @@ -175,7 +175,7 @@ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); - paintScreenShot.onActivityResult(requestCode, resultCode, data); + // paintScreenShot.onActivityResult(requestCode, resultCode, data); } } \ No newline at end of file diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintScreenShot.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintScreenShot.java index 67cd22d..6511199 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintScreenShot.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintScreenShot.java @@ -1,141 +1,141 @@ -package org.ntlab.acanthus_client.views.paint; - -import androidx.appcompat.app.AppCompatActivity; - -import android.app.Activity; -import android.graphics.ImageFormat; -import android.os.Bundle; -import android.content.Intent; -import android.graphics.Bitmap; -import android.graphics.PixelFormat; -import android.hardware.display.DisplayManager; -import android.hardware.display.VirtualDisplay; -import android.media.Image; -import android.media.ImageReader; -import android.media.projection.MediaProjection; -import android.media.projection.MediaProjectionManager; -import android.util.DisplayMetrics; -import android.util.Log; -import android.view.View; -import android.widget.Button; -import android.widget.ImageView; -import android.widget.Toast; - -import com.google.android.material.bottomnavigation.BottomNavigationView; - -import org.ntlab.acanthus_client.R; - -import java.nio.ByteBuffer; - -import static android.app.Activity.RESULT_OK; -import static android.content.Context.MEDIA_PROJECTION_SERVICE; -import static android.graphics.ImageFormat.JPEG; - - -public class PaintScreenShot { - - private AppCompatActivity appCompatActivity; - private MediaProjectionManager mpManager; - private MediaProjection mProjection; - private static final int REQUEST_MEDIA_PROJECTION = 1001; - - private int displayWidth, displayHeight; - private ImageReader imageReader; - private VirtualDisplay virtualDisplay; - private int screenDensity; - private ImageView imageView; - - public PaintScreenShot(AppCompatActivity appCompatActivity) { - this.appCompatActivity = appCompatActivity; - } - - public void onCreate() { - - Button button = appCompatActivity.findViewById(R.id.capture); - // ボタンタップでスクリーンショットを撮る - button.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - getScreenshot(); - } - }); - - // 撮影したスクリーンを表示するImageView - imageView = appCompatActivity.findViewById(R.id.image); - - // 画面の縦横サイズとdpを取得 - DisplayMetrics displayMetrics = new DisplayMetrics(); - appCompatActivity.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); - screenDensity = displayMetrics.densityDpi; - displayWidth = displayMetrics.widthPixels; - displayHeight = displayMetrics.heightPixels; - - mpManager = (MediaProjectionManager) - appCompatActivity.getSystemService(MEDIA_PROJECTION_SERVICE); - - // permissionを確認するintentを投げ、ユーザーの許可・不許可を受け取る - if(mpManager != null){ - appCompatActivity.startActivityForResult(mpManager.createScreenCaptureIntent(), - REQUEST_MEDIA_PROJECTION); - } - } - - // ユーザーの許可を受け取る - public void onActivityResult(int requestCode, int resultCode, Intent data) { - - if (REQUEST_MEDIA_PROJECTION == requestCode) { - if (resultCode != RESULT_OK) { - // 拒否された - Toast.makeText(appCompatActivity, - "User cancelled", Toast.LENGTH_LONG).show(); - return; - } - // 許可された結果を受け取る - setUpMediaProjection(resultCode, data); - } - } - - private void setUpMediaProjection(int code, Intent intent) { - mProjection = mpManager.getMediaProjection(code, intent); - setUpVirtualDisplay(); - } - - private void setUpVirtualDisplay() { - imageReader = ImageReader.newInstance( - displayWidth, displayHeight, 0x1, 2); - - virtualDisplay = mProjection.createVirtualDisplay("ScreenCapture", - displayWidth, displayHeight, screenDensity, - DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR, - imageReader.getSurface(), null, null); - } - - private void getScreenshot() { - // ImageReaderから画面を取り出す - Log.d("debug", "getScreenshot"); - - Image image = imageReader.acquireLatestImage(); - Image.Plane[] planes = image.getPlanes(); - ByteBuffer buffer = planes[0].getBuffer(); - - int pixelStride = planes[0].getPixelStride(); - int rowStride = planes[0].getRowStride(); - int rowPadding = rowStride - pixelStride * displayWidth; - - // バッファからBitmapを生成 - Bitmap bitmap = Bitmap.createBitmap( - displayWidth + rowPadding / pixelStride, displayHeight, - Bitmap.Config.ARGB_8888); - bitmap.copyPixelsFromBuffer(buffer); - image.close(); - - imageView.setImageBitmap(bitmap); - } - - public void onDestroy() { - if (virtualDisplay != null) { - Log.d("debug","release VirtualDisplay"); - virtualDisplay.release(); - } - } -} \ No newline at end of file +//package org.ntlab.acanthus_client.views.paint; +// +//import androidx.appcompat.app.AppCompatActivity; +// +//import android.app.Activity; +//import android.graphics.ImageFormat; +//import android.os.Bundle; +//import android.content.Intent; +//import android.graphics.Bitmap; +//import android.graphics.PixelFormat; +//import android.hardware.display.DisplayManager; +//import android.hardware.display.VirtualDisplay; +//import android.media.Image; +//import android.media.ImageReader; +//import android.media.projection.MediaProjection; +//import android.media.projection.MediaProjectionManager; +//import android.util.DisplayMetrics; +//import android.util.Log; +//import android.view.View; +//import android.widget.Button; +//import android.widget.ImageView; +//import android.widget.Toast; +// +//import com.google.android.material.bottomnavigation.BottomNavigationView; +// +//import org.ntlab.acanthus_client.R; +// +//import java.nio.ByteBuffer; +// +//import static android.app.Activity.RESULT_OK; +//import static android.content.Context.MEDIA_PROJECTION_SERVICE; +//import static android.graphics.ImageFormat.JPEG; +// +// +//public class PaintScreenShot { +// +// private AppCompatActivity appCompatActivity; +// private MediaProjectionManager mpManager; +// private MediaProjection mProjection; +// private static final int REQUEST_MEDIA_PROJECTION = 1001; +// +// private int displayWidth, displayHeight; +// private ImageReader imageReader; +// private VirtualDisplay virtualDisplay; +// private int screenDensity; +// private ImageView imageView; +// +// public PaintScreenShot(AppCompatActivity appCompatActivity) { +// this.appCompatActivity = appCompatActivity; +// } +// +// public void onCreate() { +// +// Button button = appCompatActivity.findViewById(R.id.capture); +// // ボタンタップでスクリーンショットを撮る +// button.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View view) { +// getScreenshot(); +// } +// }); +// +// // 撮影したスクリーンを表示するImageView +// imageView = appCompatActivity.findViewById(R.id.image); +// +// // 画面の縦横サイズとdpを取得 +// DisplayMetrics displayMetrics = new DisplayMetrics(); +// appCompatActivity.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); +// screenDensity = displayMetrics.densityDpi; +// displayWidth = displayMetrics.widthPixels; +// displayHeight = displayMetrics.heightPixels; +// +// mpManager = (MediaProjectionManager) +// appCompatActivity.getSystemService(MEDIA_PROJECTION_SERVICE); +// +// // permissionを確認するintentを投げ、ユーザーの許可・不許可を受け取る +// if(mpManager != null){ +// appCompatActivity.startActivityForResult(mpManager.createScreenCaptureIntent(), +// REQUEST_MEDIA_PROJECTION); +// } +// } +// +// // ユーザーの許可を受け取る +// public void onActivityResult(int requestCode, int resultCode, Intent data) { +// +// if (REQUEST_MEDIA_PROJECTION == requestCode) { +// if (resultCode != RESULT_OK) { +// // 拒否された +// Toast.makeText(appCompatActivity, +// "User cancelled", Toast.LENGTH_LONG).show(); +// return; +// } +// // 許可された結果を受け取る +// setUpMediaProjection(resultCode, data); +// } +// } +// +// private void setUpMediaProjection(int code, Intent intent) { +// mProjection = mpManager.getMediaProjection(code, intent); +// setUpVirtualDisplay(); +// } +// +// private void setUpVirtualDisplay() { +// imageReader = ImageReader.newInstance( +// displayWidth, displayHeight, 0x1, 2); +// +// virtualDisplay = mProjection.createVirtualDisplay("ScreenCapture", +// displayWidth, displayHeight, screenDensity, +// DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR, +// imageReader.getSurface(), null, null); +// } +// +// private void getScreenshot() { +// // ImageReaderから画面を取り出す +// Log.d("debug", "getScreenshot"); +// +// Image image = imageReader.acquireLatestImage(); +// Image.Plane[] planes = image.getPlanes(); +// ByteBuffer buffer = planes[0].getBuffer(); +// +// int pixelStride = planes[0].getPixelStride(); +// int rowStride = planes[0].getRowStride(); +// int rowPadding = rowStride - pixelStride * displayWidth; +// +// // バッファからBitmapを生成 +// Bitmap bitmap = Bitmap.createBitmap( +// displayWidth + rowPadding / pixelStride, displayHeight, +// Bitmap.Config.ARGB_8888); +// bitmap.copyPixelsFromBuffer(buffer); +// image.close(); +// +// imageView.setImageBitmap(bitmap); +// } +// +// public void onDestroy() { +// if (virtualDisplay != null) { +// Log.d("debug","release VirtualDisplay"); +// virtualDisplay.release(); +// } +// } +//} \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_baseline_cancel_24.xml b/app/src/main/res/drawable/ic_baseline_cancel_24.xml index 1062dda..0d13f4d 100644 --- a/app/src/main/res/drawable/ic_baseline_cancel_24.xml +++ b/app/src/main/res/drawable/ic_baseline_cancel_24.xml @@ -1,5 +1,11 @@ - - + + diff --git a/app/src/main/res/drawable/shape_style.xml b/app/src/main/res/drawable/shape_style.xml index 902cb50..587a484 100644 --- a/app/src/main/res/drawable/shape_style.xml +++ b/app/src/main/res/drawable/shape_style.xml @@ -1,8 +1,14 @@ - + + - + android:width="3dp" + android:color="@color/theme_color" /> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_paint.xml b/app/src/main/res/layout/activity_paint.xml index cd02060..0e344df 100644 --- a/app/src/main/res/layout/activity_paint.xml +++ b/app/src/main/res/layout/activity_paint.xml @@ -52,70 +52,82 @@ app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.213" /> -