try
{
ImageView imageView = activity.findViewById(R.id.imageView);
- return (new PointF(((event.getX() / (float) imageView.getWidth()) * 100.0f), ((event.getY() / (float) imageView.getHeight()) * 100.0f)));
+ return (new PointF(((event.getX() / (float) imageView.getWidth()) * 255.0f), ((event.getY() / (float) imageView.getHeight()) * 255.0f)));
}
catch (Exception e)
{
import androidx.annotation.NonNull;
-public class Connection
+import net.osdn.gokigen.cameratest.fuji.statuses.FujiStatusChecker;
+import net.osdn.gokigen.cameratest.fuji.statuses.IFujiStatusRequest;
+
+public class Connection implements IFujiStatusRequest
{
private final String TAG = toString();
private final MessageSequence sequence;
private final Communication comm;
+ private final FujiStatusChecker statusChecker;
public Connection(@NonNull ILiveViewImage imageViewer)
{
this.comm = new Communication(imageViewer);
this.sequence = new MessageSequence();
+ this.statusChecker = new FujiStatusChecker(this);
}
public boolean start_connect()
if (connect_to_camera())
{
- ret = get_current_settings();
+ ret = requestStatus();
+ if (ret)
+ {
+ // 定期監視の開始
+ statusChecker.start();
+ }
}
return (ret);
}
comm.send_to_camera(sequence.reset_message(), true);
ReceivedDataHolder rx_bytes = comm.receive_from_camera();
dump_bytes(0, rx_bytes);
+ statusChecker.stop();
Thread.sleep(150);
}
catch (Exception e)
}
}
- private boolean get_current_settings()
+ @Override
+ public boolean requestStatus()
{
try
{
comm.send_to_camera(sequence.status_request_message(), true);
-
+ //Thread.sleep(30);// ちょっと待つ
ReceivedDataHolder rx_bytes = comm.receive_from_camera();
+ if (rx_bytes.getData().length > 0) {
+ statusChecker.statusReceived(rx_bytes);
+ }
dump_bytes(12, rx_bytes);
// なんで2回... でもやってみる
rx_bytes = comm.receive_from_camera();
dump_bytes(13, rx_bytes);
+ return (true);
}
catch (Exception e)
{
--- /dev/null
+package net.osdn.gokigen.cameratest.fuji.statuses;
+
+import android.util.Log;
+
+import net.osdn.gokigen.cameratest.fuji.ReceivedDataHolder;
+
+public class FujiStatusChecker implements IFujiStatusReceive
+{
+ private final String TAG = toString();
+ private final IFujiStatusRequest comm;
+ private boolean threadIsRunning = false;
+ private final int WAIT_MS = 400;
+
+ public FujiStatusChecker(IFujiStatusRequest comm)
+ {
+ this.comm = comm;
+ }
+
+ @Override
+ public void statusReceived(ReceivedDataHolder data)
+ {
+ statusReceivedImpl(data.getData());
+ }
+
+ @Override
+ public void statusReceived2nd(ReceivedDataHolder data)
+ {
+ statusReceivedImpl(data.getData());
+ }
+
+ @Override
+ public void start()
+ {
+ Thread thread = new Thread(new Runnable() {
+ @Override
+ public void run()
+ {
+ try
+ {
+ threadIsRunning = true;
+ while (threadIsRunning)
+ {
+ comm.requestStatus();
+ Thread.sleep(WAIT_MS);
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ threadIsRunning = false;
+ Log.v(TAG, "--- FINISH STATUS WATCH ---");
+
+ }
+ });
+ try
+ {
+ if (!threadIsRunning)
+ {
+ Log.v(TAG, "--- START STATUS WATCH ---");
+ thread.start();
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void stop()
+ {
+ threadIsRunning = false;
+ }
+
+ private void statusReceivedImpl(byte[] data)
+ {
+ try
+ {
+ Log.v(TAG, "status Received. " + data.length + " bytes.");
+
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+}
--- /dev/null
+package net.osdn.gokigen.cameratest.fuji.statuses;
+
+import net.osdn.gokigen.cameratest.fuji.ReceivedDataHolder;
+
+public interface IFujiStatusReceive
+{
+ void start();
+ void stop();
+ void statusReceived(ReceivedDataHolder data);
+ void statusReceived2nd(ReceivedDataHolder data);
+}
--- /dev/null
+package net.osdn.gokigen.cameratest.fuji.statuses;
+
+public interface IFujiStatusRequest
+{
+ boolean requestStatus();
+}