diff --git a/.idea/misc.xml b/.idea/misc.xml index 237ffda..bb506a3 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -9,10 +9,15 @@ + + + + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7f805bd..78c8159 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -4,6 +4,8 @@ + + - - + android:name=".views.paint.SendScreenShotActivity" + android:theme="@android:style/Theme.Translucent.NoTitleBar" /> + + @@ -27,9 +29,9 @@ - - - + + + () { + @Override + public void onChanged(Integer i) { + binding.buttonAddPage.setText(String.valueOf(i)); + } + }); + } + //------------------------------------------------------------------ // デバッグ用の現在編集中のAid表示 private void displayAid() { diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/SendScreenShotActivity.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/SendScreenShotActivity.java new file mode 100644 index 0000000..732e525 --- /dev/null +++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/SendScreenShotActivity.java @@ -0,0 +1,113 @@ +package org.ntlab.acanthus_client.views.paint; + +import androidx.appcompat.app.AppCompatActivity; + +import android.app.Activity; +import android.content.Intent; +import android.graphics.Bitmap; +import android.net.Uri; +import android.os.Bundle; +import android.os.Environment; +import android.view.View; +import android.widget.Button; + +import org.ntlab.acanthus_client.R; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; + +public class SendScreenShotActivity extends Activity implements View.OnClickListener { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_send_screen_shot); + // 全体キャプチャ + Button captureAll = (Button)findViewById(R.id.capture_all); + captureAll.setOnClickListener(this); + + // アイコン画像のみキャプチャ + Button captureIcon = (Button)findViewById(R.id.capture_icon); + captureIcon.setOnClickListener(this); + + // キャプチャした画像を添付してメールを送る + Button sendMail = (Button)findViewById(R.id.send_mail); + sendMail.setOnClickListener(this); + + } + + @Override + public void onClick(View v) { + // 読み書きするファイル名を指定 + File file = new File(Environment.getExternalStorageDirectory() + "/capture.jpeg"); + // 指定したファイル名が無ければ作成する。 + file.getParentFile().mkdir(); + + switch(v.getId()) { + case R.id.capture_all: + // 全体を撮る + saveCapture(findViewById(android.R.id.content),file); + break; + case R.id.capture_icon: + // View1を撮る + saveCapture(findViewById(R.id.icon),file); + break; + case R.id.send_mail: + Intent intent = new Intent(); + intent.setAction(Intent.ACTION_SEND); + intent.putExtra(Intent.EXTRA_EMAIL, new String[] {"s1871104@s.konan-u.ac.jp"}); + intent.setType("message/rfc822"); + intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file)); + startActivity(intent); + + break; + } + } + + /** + * 撮ったキャプチャを保存 + * @param view + * @param 書き込み先ファイルfile + */ + public void saveCapture(View view, File file) { + // キャプチャを撮る + Bitmap capture = getViewCapture(view); + FileOutputStream fos = null; + try { + fos = new FileOutputStream(file, false); + // 画像のフォーマットと画質と出力先を指定して保存 + capture.compress(Bitmap.CompressFormat.JPEG, 100, fos); + fos.flush(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (fos != null) { + try { + fos.close(); + } catch (IOException ie) { + fos = null; + } + } + } + } + + /** + * キャプチャを撮る + * @param 撮りたいview + * @return 撮ったキャプチャ(Bitmap) + */ + public Bitmap getViewCapture(View view) { + view.setDrawingCacheEnabled(true); + + // Viewのキャプチャを取得 + Bitmap cache = view.getDrawingCache(); + if(cache == null){ + return null; + } + Bitmap screenShot = Bitmap.createBitmap(cache); + view.setDrawingCacheEnabled(false); + return screenShot; + } + +} \ 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 6cfe692..9fb5a4c 100644 --- a/app/src/main/res/layout/activity_paint.xml +++ b/app/src/main/res/layout/activity_paint.xml @@ -15,8 +15,10 @@ android:layout_weight="1" app:layout_constraintBottom_toTopOf="@+id/navPaint" app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintHorizontal_bias="1.0" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="1.0" />