mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge.git
synced 2026-07-31 07:44:24 +02:00
FitPro: Add camera
This commit is contained in:
@@ -17,11 +17,15 @@
|
||||
package nodomain.freeyourgadget.gadgetbridge.devices;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
|
||||
import androidx.annotation.DrawableRes;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.activities.CameraActivity;
|
||||
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventCameraRemote;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
|
||||
public interface DeviceCardAction {
|
||||
@@ -41,4 +45,28 @@ public interface DeviceCardAction {
|
||||
}
|
||||
|
||||
void onClick(@NonNull final GBDevice device, @NonNull final Context context);
|
||||
|
||||
class CameraAction implements DeviceCardAction {
|
||||
@Override
|
||||
public int getIcon(@NonNull GBDevice device) {
|
||||
return R.drawable.ic_camera_remote;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public String getDescription(@NonNull GBDevice device, @NonNull Context context) {
|
||||
return context.getString(R.string.open_camera);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(@NonNull GBDevice device, @NonNull Context context) {
|
||||
final Intent cameraIntent = new Intent(context, CameraActivity.class);
|
||||
cameraIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
cameraIntent.putExtra(
|
||||
CameraActivity.intentExtraEvent,
|
||||
GBDeviceEventCameraRemote.eventToInt(GBDeviceEventCameraRemote.Event.OPEN_CAMERA)
|
||||
);
|
||||
context.startActivity(cameraIntent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+13
@@ -26,15 +26,19 @@ import androidx.annotation.Nullable;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.EnumSet;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import de.greenrobot.dao.AbstractDao;
|
||||
import de.greenrobot.dao.Property;
|
||||
import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.activities.CameraActivity;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.AbstractBLEDeviceCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCardAction;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider;
|
||||
import nodomain.freeyourgadget.gadgetbridge.entities.DaoSession;
|
||||
import nodomain.freeyourgadget.gadgetbridge.entities.FitProActivitySampleDao;
|
||||
@@ -175,4 +179,13 @@ public class FitProDeviceCoordinator extends AbstractBLEDeviceCoordinator {
|
||||
public DeviceKind getDeviceKind(@NonNull GBDevice device) {
|
||||
return DeviceKind.FITNESS_BAND;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DeviceCardAction> getCustomActions() {
|
||||
if (!CameraActivity.supportsCamera()) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
return Collections.singletonList(new DeviceCardAction.CameraAction());
|
||||
}
|
||||
}
|
||||
|
||||
+1
-22
@@ -16,8 +16,6 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>. */
|
||||
package nodomain.freeyourgadget.gadgetbridge.devices.gloryfit
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import de.greenrobot.dao.AbstractDao
|
||||
import de.greenrobot.dao.Property
|
||||
import nodomain.freeyourgadget.gadgetbridge.R
|
||||
@@ -26,7 +24,6 @@ import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSpec
|
||||
import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSpecificSettingsCustomizer
|
||||
import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSpecificSettingsScreen
|
||||
import nodomain.freeyourgadget.gadgetbridge.capabilities.HeartRateCapability.MeasurementInterval
|
||||
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventCameraRemote
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.AbstractBLEDeviceCoordinator
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCardAction
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator
|
||||
@@ -251,25 +248,7 @@ abstract class GloryFitCoordinator : AbstractBLEDeviceCoordinator() {
|
||||
}
|
||||
|
||||
return listOf(
|
||||
object : DeviceCardAction {
|
||||
override fun getIcon(device: GBDevice): Int {
|
||||
return R.drawable.ic_camera_remote
|
||||
}
|
||||
|
||||
override fun getDescription(device: GBDevice, context: Context): String {
|
||||
return context.getString(R.string.open_camera)
|
||||
}
|
||||
|
||||
override fun onClick(device: GBDevice, context: Context) {
|
||||
val cameraIntent = Intent(context, CameraActivity::class.java)
|
||||
cameraIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
cameraIntent.putExtra(
|
||||
CameraActivity.intentExtraEvent,
|
||||
GBDeviceEventCameraRemote.eventToInt(GBDeviceEventCameraRemote.Event.OPEN_CAMERA)
|
||||
)
|
||||
context.startActivity(cameraIntent)
|
||||
}
|
||||
}
|
||||
DeviceCardAction.CameraAction()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
+5
-1
@@ -122,6 +122,7 @@ import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSett
|
||||
import nodomain.freeyourgadget.gadgetbridge.database.DBHandler;
|
||||
import nodomain.freeyourgadget.gadgetbridge.database.DBHelper;
|
||||
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventBatteryInfo;
|
||||
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventCameraRemote;
|
||||
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventFindPhone;
|
||||
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventMusicControl;
|
||||
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventVersionInfo;
|
||||
@@ -789,7 +790,10 @@ public class FitProDeviceSupport extends AbstractBTLESingleDeviceSupport {
|
||||
|
||||
*/
|
||||
public void handleCamera(byte command) {
|
||||
GB.toast(getContext(), "Camera buttons are detected but not further handled.", Toast.LENGTH_SHORT, GB.INFO);
|
||||
LOG.debug("Got camera button: {}", String.format("0x%02x", command));
|
||||
final GBDeviceEventCameraRemote cameraEvent = new GBDeviceEventCameraRemote();
|
||||
cameraEvent.event = GBDeviceEventCameraRemote.Event.TAKE_PICTURE;
|
||||
evaluateGBDeviceEvent(cameraEvent);
|
||||
}
|
||||
|
||||
public void handleFindPhone() {
|
||||
|
||||
Reference in New Issue
Block a user