From b34963588b2334c1799d2c9efe048a81ad1ba685 Mon Sep 17 00:00:00 2001 From: MRSa Date: Mon, 6 May 2019 19:38:44 +0900 Subject: [PATCH] =?utf8?q?=E3=83=A9=E3=82=A4=E3=83=96=E3=83=93=E3=83=A5?= =?utf8?q?=E3=83=BC=E3=83=87=E3=83=BC=E3=82=BF=E3=82=92=E6=8B=BE=E3=81=86?= =?utf8?q?=E3=81=9F=E3=82=81=E3=81=AB=E6=A4=9C=E8=A8=8E=E4=B8=AD=E3=80=82?= =?utf8?q?=E3=81=9D=E3=81=AE=EF=BC=96=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../net/osdn/gokigen/cameratest/MainActivity.java | 10 +++ .../osdn/gokigen/cameratest/camtest/CamTest.java | 99 +++++++++++++++++++++- app/src/main/res/menu/menu_main.xml | 19 ++++- app/src/main/res/values/strings.xml | 2 + 4 files changed, 123 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/net/osdn/gokigen/cameratest/MainActivity.java b/app/src/main/java/net/osdn/gokigen/cameratest/MainActivity.java index 540b181..1f3f494 100644 --- a/app/src/main/java/net/osdn/gokigen/cameratest/MainActivity.java +++ b/app/src/main/java/net/osdn/gokigen/cameratest/MainActivity.java @@ -175,6 +175,16 @@ public class MainActivity extends AppCompatActivity exitApplication(); return (true); } + if (id == R.id.action_add_value) + { + testTarget.addValue(); + return (true); + } + if (id == R.id.action_delete_value) + { + testTarget.deleteValue(); + return (true); + } return super.onOptionsItemSelected(item); } diff --git a/app/src/main/java/net/osdn/gokigen/cameratest/camtest/CamTest.java b/app/src/main/java/net/osdn/gokigen/cameratest/camtest/CamTest.java index d4ba5f4..6899117 100644 --- a/app/src/main/java/net/osdn/gokigen/cameratest/camtest/CamTest.java +++ b/app/src/main/java/net/osdn/gokigen/cameratest/camtest/CamTest.java @@ -18,17 +18,22 @@ import net.osdn.gokigen.cameratest.fuji.ReceivedDataHolder; import androidx.annotation.NonNull; +import org.opencv.android.Utils; import org.opencv.core.Mat; +import org.opencv.core.Size; import org.opencv.imgcodecs.Imgcodecs; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileWriter; +import java.io.InputStream; import java.nio.ByteBuffer; import java.util.Arrays; +import static org.opencv.core.CvType.CV_16UC3; import static org.opencv.core.CvType.CV_8UC1; +import static org.opencv.core.CvType.CV_8UC3; import static org.opencv.imgcodecs.Imgcodecs.IMREAD_COLOR; public class CamTest implements View.OnClickListener, ILiveViewImage @@ -39,6 +44,7 @@ public class CamTest implements View.OnClickListener, ILiveViewImage private Connection connection; private FileOutputStream outputStream = null; private FileWriter fileWriter = null; + private int offsetSize = 0; public CamTest(@NonNull Activity activity) { @@ -81,6 +87,23 @@ public class CamTest implements View.OnClickListener, ILiveViewImage showMessageText("BBBB"); } + public void addValue() + { + Log.v(TAG, "add value"); + + offsetSize++; + showMessageText(" OFFSET VALUE : " + offsetSize); + } + + public void deleteValue() + { + Log.v(TAG, "delete value"); + + offsetSize--; + showMessageText(" OFFSET VALUE : " + offsetSize); + } + + private void showMessageText(final String message) { activity.runOnUiThread(new Runnable() { @@ -286,7 +309,11 @@ public class CamTest implements View.OnClickListener, ILiveViewImage Thread thread = new Thread(new Runnable() { @Override public void run() { - readImageFileImpl(readFileName); + if (offsetSize < 0) { + readImageFileImpl(readFileName); + } else { + readImageFileImpl2nd(readFileName); + } } }); try @@ -342,6 +369,72 @@ public class CamTest implements View.OnClickListener, ILiveViewImage } } + private void readImageFileImpl2nd(final String readFileName) + { + try + { + Log.v(TAG, "readImageFileImpl2nd() : " + readFileName); + final String directoryPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getPath() + "/AirA01a/"; + File filepath = new File(directoryPath.toLowerCase(), readFileName.toLowerCase()); + InputStream istr = new FileInputStream(filepath); + + byte[] readBuffer = new byte[1024 * 1024]; + int dataSize = istr.read(readBuffer, 0, readBuffer.length); + istr.close(); + + for (offsetSize = 4096; offsetSize >= 0; offsetSize--) + { + try + { + Log.v(TAG, "readImageFileImpl2nd() : readSize is " + dataSize + ", offset : " + offsetSize); + + byte[] buffer = Arrays.copyOfRange(readBuffer, offsetSize, dataSize - offsetSize); + + // OpenCVのデータ型に変換 + Mat rawData = new Mat(1, buffer.length, CV_8UC3); + rawData.put(0, 0, buffer); + Mat decodedImage = Imgcodecs.imdecode(rawData, IMREAD_COLOR); + + final Bitmap imageData = Bitmap.createBitmap(decodedImage.width(), decodedImage.height(), Bitmap.Config.ARGB_8888); + Utils.matToBitmap(decodedImage, imageData); + + Log.v(TAG, "readImageFileImpl2nd() : bitmap is " + imageData.getByteCount() + " bytes."); + + ////// 画像表示を更新する ////// + activity.runOnUiThread(new Runnable() { + @Override + public void run() { + try + { + // ビットマップイメージを表示する。 + ImageView view = activity.findViewById(R.id.information_view); + view.setImageBitmap(imageData); + view.invalidate(); + } + catch (Throwable e) + { + e.printStackTrace(); + } + } + }); + break; + } + catch (Throwable t) + { + t.printStackTrace(); + } + } + Log.v(TAG, "readImageFileImpl2nd() is finished."); + offsetSize = 0; + } + catch (Throwable e) + { + e.printStackTrace(); + } + } + + + private Bitmap getBitmap(ReceivedDataHolder receivedData) { Bitmap bitmap; @@ -351,10 +444,10 @@ public class CamTest implements View.OnClickListener, ILiveViewImage // final byte[] imageBytes = Arrays.copyOfRange(dataValue, 18, dataValue.length); // OpenCVのデータ型に変換 - Mat rawData = new Mat( 1,dataLength, CV_8UC1, dataValue); + Mat rawData = new Mat( 1,dataLength, CV_8UC3, dataValue); Mat decodedImage = Imgcodecs.imdecode(rawData, IMREAD_COLOR); bitmap = Bitmap.createBitmap(decodedImage.width(), decodedImage.height(), Bitmap.Config.ARGB_8888); - //org.opencv.android.Utils.matToBitmap(decodedImage, bitmap); + org.opencv.android.Utils.matToBitmap(decodedImage, bitmap); rawData.release(); decodedImage.release(); diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml index 2b2e997..4191e20 100644 --- a/app/src/main/res/menu/menu_main.xml +++ b/app/src/main/res/menu/menu_main.xml @@ -8,13 +8,24 @@ android:title="@string/action_exit_app" app:showAsAction="never" /> + android:id="@+id/action_settings" + android:orderInCategory="100" + android:title="@string/action_settings" + app:showAsAction="never" /> + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 187166a..4a22e2a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -12,4 +12,6 @@ 3 4 5 + Add + Delete -- 2.11.0