├── .gitignore
├── libs
├── acra-4.2.3.jar
└── acra-4.2.3-sources.jar
├── res
├── drawable-hdpi
│ ├── icon.png
│ ├── arrow1.png
│ ├── arrow2.png
│ ├── arrow3.png
│ ├── batterylevel_0.png
│ ├── icon_pro_white.png
│ ├── shootingmode_m.png
│ ├── batterylevel_10.png
│ ├── batterylevel_100.png
│ ├── batterylevel_20.png
│ ├── batterylevel_30.png
│ ├── batterylevel_40.png
│ ├── batterylevel_50.png
│ ├── batterylevel_60.png
│ ├── batterylevel_70.png
│ ├── batterylevel_80.png
│ ├── batterylevel_90.png
│ ├── shootingmode_av.png
│ ├── shootingmode_ca.png
│ ├── shootingmode_dep.png
│ ├── shootingmode_tv.png
│ ├── divider_arrow_right.png
│ ├── shootingmode_adep.png
│ ├── shootingmode_auto.png
│ ├── shootingmode_bulb.png
│ ├── shootingmode_lock.png
│ ├── shootingmode_sports.png
│ ├── whitebalance_auto.png
│ ├── whitebalance_cloudy.png
│ ├── whitebalance_flash.png
│ ├── whitebalance_shade.png
│ ├── divider_background.9.png
│ ├── metering_af_auto_area.png
│ ├── shootingmode_close_up.png
│ ├── shootingmode_portrait.png
│ ├── shootingmode_program.png
│ ├── shootingmode_unknown.png
│ ├── whitebalance_custom1.png
│ ├── whitebalance_custom2.png
│ ├── whitebalance_custom3.png
│ ├── whitebalance_custom4.png
│ ├── whitebalance_custom5.png
│ ├── whitebalance_daylight.png
│ ├── whitebalance_manual1.png
│ ├── whitebalance_manual2.png
│ ├── whitebalance_manual3.png
│ ├── whitebalance_manual4.png
│ ├── whitebalance_manual5.png
│ ├── whitebalance_tungsten.png
│ ├── whitebalance_unknown.png
│ ├── metering_af_3d_tracking.png
│ ├── metering_af_dynamic_area.png
│ ├── metering_af_single_point.png
│ ├── metering_exposure_spot.png
│ ├── shootingmode_flash_off.png
│ ├── shootingmode_landscape.png
│ ├── whitebalance_fluorescent.png
│ ├── metering_exposure_partial.png
│ ├── shootingmode_creativeauto.png
│ ├── metering_exposure_matrix_nikon.png
│ ├── whitebalance_color_temperature.png
│ ├── metering_exposure_evaluative_canon.png
│ ├── shootingmode_night_scene_portrait.png
│ ├── metering_exposure_center_weighted_nikon.png
│ └── metering_exposure_center_weighted_average_canon.png
├── drawable-mdpi
│ ├── icon.png
│ ├── arrow1.png
│ ├── arrow2.png
│ ├── arrow3.png
│ ├── batterylevel_0.png
│ ├── icon_pro_white.png
│ ├── shootingmode_m.png
│ ├── batterylevel_10.png
│ ├── batterylevel_100.png
│ ├── batterylevel_20.png
│ ├── batterylevel_30.png
│ ├── batterylevel_40.png
│ ├── batterylevel_50.png
│ ├── batterylevel_60.png
│ ├── batterylevel_70.png
│ ├── batterylevel_80.png
│ ├── batterylevel_90.png
│ ├── shootingmode_av.png
│ ├── shootingmode_ca.png
│ ├── shootingmode_dep.png
│ ├── shootingmode_tv.png
│ ├── divider_arrow_right.png
│ ├── shootingmode_adep.png
│ ├── shootingmode_auto.png
│ ├── shootingmode_bulb.png
│ ├── shootingmode_lock.png
│ ├── shootingmode_sports.png
│ ├── whitebalance_auto.png
│ ├── whitebalance_cloudy.png
│ ├── whitebalance_flash.png
│ ├── whitebalance_shade.png
│ ├── divider_background.9.png
│ ├── metering_af_auto_area.png
│ ├── shootingmode_close_up.png
│ ├── shootingmode_portrait.png
│ ├── shootingmode_program.png
│ ├── shootingmode_unknown.png
│ ├── whitebalance_custom1.png
│ ├── whitebalance_custom2.png
│ ├── whitebalance_custom3.png
│ ├── whitebalance_custom4.png
│ ├── whitebalance_custom5.png
│ ├── whitebalance_daylight.png
│ ├── whitebalance_manual1.png
│ ├── whitebalance_manual2.png
│ ├── whitebalance_manual3.png
│ ├── whitebalance_manual4.png
│ ├── whitebalance_manual5.png
│ ├── whitebalance_tungsten.png
│ ├── whitebalance_unknown.png
│ ├── metering_af_3d_tracking.png
│ ├── metering_af_dynamic_area.png
│ ├── metering_af_single_point.png
│ ├── metering_exposure_spot.png
│ ├── shootingmode_flash_off.png
│ ├── shootingmode_landscape.png
│ ├── whitebalance_fluorescent.png
│ ├── metering_exposure_partial.png
│ ├── shootingmode_creativeauto.png
│ ├── metering_exposure_matrix_nikon.png
│ ├── whitebalance_color_temperature.png
│ ├── metering_exposure_evaluative_canon.png
│ ├── shootingmode_night_scene_portrait.png
│ ├── metering_exposure_center_weighted_nikon.png
│ └── metering_exposure_center_weighted_average_canon.png
├── drawable-xlarge-hdpi
│ ├── arrow1.png
│ ├── arrow2.png
│ ├── arrow3.png
│ ├── batterylevel_0.png
│ ├── shootingmode_m.png
│ ├── batterylevel_10.png
│ ├── batterylevel_100.png
│ ├── batterylevel_20.png
│ ├── batterylevel_30.png
│ ├── batterylevel_40.png
│ ├── batterylevel_50.png
│ ├── batterylevel_60.png
│ ├── batterylevel_70.png
│ ├── batterylevel_80.png
│ ├── batterylevel_90.png
│ ├── shootingmode_adep.png
│ ├── shootingmode_auto.png
│ ├── shootingmode_av.png
│ ├── shootingmode_bulb.png
│ ├── shootingmode_ca.png
│ ├── shootingmode_dep.png
│ ├── shootingmode_lock.png
│ ├── shootingmode_tv.png
│ ├── whitebalance_auto.png
│ ├── shootingmode_sports.png
│ ├── whitebalance_cloudy.png
│ ├── whitebalance_flash.png
│ ├── whitebalance_shade.png
│ ├── metering_af_auto_area.png
│ ├── metering_exposure_spot.png
│ ├── shootingmode_close_up.png
│ ├── shootingmode_flash_off.png
│ ├── shootingmode_landscape.png
│ ├── shootingmode_portrait.png
│ ├── shootingmode_program.png
│ ├── shootingmode_unknown.png
│ ├── whitebalance_custom1.png
│ ├── whitebalance_custom2.png
│ ├── whitebalance_custom3.png
│ ├── whitebalance_custom4.png
│ ├── whitebalance_custom5.png
│ ├── whitebalance_daylight.png
│ ├── whitebalance_manual1.png
│ ├── whitebalance_manual2.png
│ ├── whitebalance_manual3.png
│ ├── whitebalance_manual4.png
│ ├── whitebalance_manual5.png
│ ├── whitebalance_tungsten.png
│ ├── whitebalance_unknown.png
│ ├── metering_af_3d_tracking.png
│ ├── metering_af_dynamic_area.png
│ ├── metering_af_single_point.png
│ ├── whitebalance_fluorescent.png
│ ├── metering_exposure_partial.png
│ ├── shootingmode_creativeauto.png
│ ├── metering_exposure_matrix_nikon.png
│ ├── whitebalance_color_temperature.png
│ ├── metering_exposure_evaluative_canon.png
│ ├── shootingmode_night_scene_portrait.png
│ ├── metering_exposure_center_weighted_nikon.png
│ └── metering_exposure_center_weighted_average_canon.png
├── drawable-xlarge-mdpi
│ ├── arrow1.png
│ ├── arrow2.png
│ ├── arrow3.png
│ ├── batterylevel_0.png
│ ├── shootingmode_m.png
│ ├── batterylevel_10.png
│ ├── batterylevel_100.png
│ ├── batterylevel_20.png
│ ├── batterylevel_30.png
│ ├── batterylevel_40.png
│ ├── batterylevel_50.png
│ ├── batterylevel_60.png
│ ├── batterylevel_70.png
│ ├── batterylevel_80.png
│ ├── batterylevel_90.png
│ ├── shootingmode_adep.png
│ ├── shootingmode_auto.png
│ ├── shootingmode_av.png
│ ├── shootingmode_bulb.png
│ ├── shootingmode_ca.png
│ ├── shootingmode_dep.png
│ ├── shootingmode_lock.png
│ ├── shootingmode_tv.png
│ ├── whitebalance_auto.png
│ ├── shootingmode_sports.png
│ ├── whitebalance_cloudy.png
│ ├── whitebalance_flash.png
│ ├── whitebalance_shade.png
│ ├── metering_af_auto_area.png
│ ├── metering_exposure_spot.png
│ ├── shootingmode_close_up.png
│ ├── shootingmode_flash_off.png
│ ├── shootingmode_landscape.png
│ ├── shootingmode_portrait.png
│ ├── shootingmode_program.png
│ ├── shootingmode_unknown.png
│ ├── whitebalance_custom1.png
│ ├── whitebalance_custom2.png
│ ├── whitebalance_custom3.png
│ ├── whitebalance_custom4.png
│ ├── whitebalance_custom5.png
│ ├── whitebalance_daylight.png
│ ├── whitebalance_manual1.png
│ ├── whitebalance_manual2.png
│ ├── whitebalance_manual3.png
│ ├── whitebalance_manual4.png
│ ├── whitebalance_manual5.png
│ ├── whitebalance_tungsten.png
│ ├── whitebalance_unknown.png
│ ├── metering_af_3d_tracking.png
│ ├── metering_af_dynamic_area.png
│ ├── metering_af_single_point.png
│ ├── whitebalance_fluorescent.png
│ ├── metering_exposure_partial.png
│ ├── shootingmode_creativeauto.png
│ ├── metering_exposure_matrix_nikon.png
│ ├── whitebalance_color_temperature.png
│ ├── metering_exposure_evaluative_canon.png
│ ├── shootingmode_night_scene_portrait.png
│ ├── metering_exposure_center_weighted_nikon.png
│ └── metering_exposure_center_weighted_average_canon.png
├── drawable-xhdpi
│ └── icon_pro_white.png
├── values
│ ├── config.xml
│ ├── ids.xml
│ ├── colors.xml
│ ├── dimens.xml
│ └── arrays.xml
├── drawable
│ ├── window_background.xml
│ └── batterylevel.xml
├── layout
│ ├── session.xml
│ ├── property_icon_list_item.xml
│ ├── property_list_item.xml
│ ├── picture_frag.xml
│ ├── thumbnail_list_item.xml
│ ├── property_listview.xml
│ ├── gallery_list_item.xml
│ ├── webview_dialog.xml
│ ├── drive_lens_pane.xml
│ ├── gallery_frag.xml
│ └── about_dialog.xml
├── xml
│ ├── device_filter.xml
│ └── app_settings_preferences.xml
├── values-large
│ ├── dimens.xml
│ └── styles.xml
├── values-xlarge
│ └── dimens.xml
└── menu
│ └── main_menu.xml
├── project.properties
├── .classpath
├── assets
└── changelog
│ ├── changelog.css
│ └── changelog.html
├── src
└── com
│ └── remoteyourcam
│ └── usb
│ ├── view
│ ├── BaseFragment.java
│ ├── SessionActivity.java
│ ├── SessionFragment.java
│ ├── SessionView.java
│ ├── WebViewDialogFragment.java
│ ├── AspectRatioImageView.java
│ └── StorageAdapter.java
│ ├── util
│ ├── DimenUtil.java
│ ├── NotificationIds.java
│ └── PackageUtil.java
│ ├── AppConfig.java
│ ├── ptp
│ ├── FocusPoint.java
│ ├── commands
│ │ ├── eos
│ │ │ ├── EosCommand.java
│ │ │ ├── EosTakePictureCommand.java
│ │ │ ├── EosSetPcModeCommand.java
│ │ │ ├── EosSetExtendedEventInfoCommand.java
│ │ │ └── EosSetPropertyCommand.java
│ │ ├── nikon
│ │ │ ├── NikonCommand.java
│ │ │ ├── NikonAfDriveDeviceReadyCommand.java
│ │ │ ├── NikonAfDriveCommand.java
│ │ │ ├── NikonGetVendorPropCodesCommand.java
│ │ │ ├── NikonStopLiveViewAction.java
│ │ │ ├── NikonCloseSessionAction.java
│ │ │ ├── NikonStartLiveViewAction.java
│ │ │ ├── NikonGetLiveViewImageAction.java
│ │ │ └── NikonEventCheckCommand.java
│ │ ├── InitiateCaptureCommand.java
│ │ ├── GetStorageIdsCommand.java
│ │ ├── OpenSessionCommand.java
│ │ ├── GetStorageInfoCommand.java
│ │ ├── RetrieveAddedObjectInfoAction.java
│ │ ├── RetrieveImageAction.java
│ │ ├── GetDevicePropDescCommand.java
│ │ ├── GetDeviceInfoCommand.java
│ │ ├── CloseSessionCommand.java
│ │ ├── SimpleCommand.java
│ │ ├── GetThumb.java
│ │ ├── GetObjectInfoCommand.java
│ │ ├── GetDevicePropValueCommand.java
│ │ ├── GetStorageInfosAction.java
│ │ └── RetrieveImageInfoAction.java
│ ├── EosConstants.java
│ ├── PtpAction.java
│ ├── model
│ │ ├── LiveViewData.java
│ │ └── StorageInfo.java
│ ├── PtpService.java
│ ├── WorkerNotifier.java
│ └── PtpUsbConnection.java
│ ├── RycApplication.java
│ ├── activities
│ └── AppSettingsActivity.java
│ ├── AbstractRycApplication.java
│ └── PropertyToggle.java
├── .project
├── NOTICE.txt
├── README.md
└── proguard.cfg
/.gitignore:
--------------------------------------------------------------------------------
1 | .settings
2 | bin
3 | gen
4 |
--------------------------------------------------------------------------------
/libs/acra-4.2.3.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/libs/acra-4.2.3.jar
--------------------------------------------------------------------------------
/res/drawable-hdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/icon.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/icon.png
--------------------------------------------------------------------------------
/libs/acra-4.2.3-sources.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/libs/acra-4.2.3-sources.jar
--------------------------------------------------------------------------------
/res/drawable-hdpi/arrow1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/arrow1.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/arrow2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/arrow2.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/arrow3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/arrow3.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/arrow1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/arrow1.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/arrow2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/arrow2.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/arrow3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/arrow3.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/batterylevel_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/batterylevel_0.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/icon_pro_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/icon_pro_white.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/shootingmode_m.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/shootingmode_m.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/batterylevel_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/batterylevel_0.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/icon_pro_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/icon_pro_white.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/shootingmode_m.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/shootingmode_m.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/arrow1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/arrow1.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/arrow2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/arrow2.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/arrow3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/arrow3.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/arrow1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/arrow1.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/arrow2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/arrow2.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/arrow3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/arrow3.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/batterylevel_10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/batterylevel_10.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/batterylevel_100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/batterylevel_100.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/batterylevel_20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/batterylevel_20.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/batterylevel_30.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/batterylevel_30.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/batterylevel_40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/batterylevel_40.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/batterylevel_50.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/batterylevel_50.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/batterylevel_60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/batterylevel_60.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/batterylevel_70.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/batterylevel_70.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/batterylevel_80.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/batterylevel_80.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/batterylevel_90.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/batterylevel_90.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/shootingmode_av.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/shootingmode_av.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/shootingmode_ca.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/shootingmode_ca.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/shootingmode_dep.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/shootingmode_dep.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/shootingmode_tv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/shootingmode_tv.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/batterylevel_10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/batterylevel_10.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/batterylevel_100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/batterylevel_100.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/batterylevel_20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/batterylevel_20.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/batterylevel_30.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/batterylevel_30.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/batterylevel_40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/batterylevel_40.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/batterylevel_50.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/batterylevel_50.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/batterylevel_60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/batterylevel_60.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/batterylevel_70.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/batterylevel_70.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/batterylevel_80.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/batterylevel_80.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/batterylevel_90.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/batterylevel_90.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/shootingmode_av.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/shootingmode_av.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/shootingmode_ca.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/shootingmode_ca.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/shootingmode_dep.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/shootingmode_dep.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/shootingmode_tv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/shootingmode_tv.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/icon_pro_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xhdpi/icon_pro_white.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/divider_arrow_right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/divider_arrow_right.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/shootingmode_adep.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/shootingmode_adep.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/shootingmode_auto.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/shootingmode_auto.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/shootingmode_bulb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/shootingmode_bulb.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/shootingmode_lock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/shootingmode_lock.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/shootingmode_sports.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/shootingmode_sports.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/whitebalance_auto.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/whitebalance_auto.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/whitebalance_cloudy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/whitebalance_cloudy.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/whitebalance_flash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/whitebalance_flash.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/whitebalance_shade.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/whitebalance_shade.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/divider_arrow_right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/divider_arrow_right.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/shootingmode_adep.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/shootingmode_adep.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/shootingmode_auto.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/shootingmode_auto.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/shootingmode_bulb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/shootingmode_bulb.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/shootingmode_lock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/shootingmode_lock.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/shootingmode_sports.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/shootingmode_sports.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/whitebalance_auto.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/whitebalance_auto.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/whitebalance_cloudy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/whitebalance_cloudy.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/whitebalance_flash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/whitebalance_flash.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/whitebalance_shade.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/whitebalance_shade.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/divider_background.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/divider_background.9.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/metering_af_auto_area.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/metering_af_auto_area.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/shootingmode_close_up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/shootingmode_close_up.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/shootingmode_portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/shootingmode_portrait.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/shootingmode_program.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/shootingmode_program.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/shootingmode_unknown.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/shootingmode_unknown.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/whitebalance_custom1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/whitebalance_custom1.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/whitebalance_custom2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/whitebalance_custom2.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/whitebalance_custom3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/whitebalance_custom3.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/whitebalance_custom4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/whitebalance_custom4.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/whitebalance_custom5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/whitebalance_custom5.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/whitebalance_daylight.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/whitebalance_daylight.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/whitebalance_manual1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/whitebalance_manual1.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/whitebalance_manual2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/whitebalance_manual2.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/whitebalance_manual3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/whitebalance_manual3.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/whitebalance_manual4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/whitebalance_manual4.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/whitebalance_manual5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/whitebalance_manual5.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/whitebalance_tungsten.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/whitebalance_tungsten.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/whitebalance_unknown.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/whitebalance_unknown.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/divider_background.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/divider_background.9.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/metering_af_auto_area.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/metering_af_auto_area.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/shootingmode_close_up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/shootingmode_close_up.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/shootingmode_portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/shootingmode_portrait.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/shootingmode_program.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/shootingmode_program.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/shootingmode_unknown.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/shootingmode_unknown.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/whitebalance_custom1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/whitebalance_custom1.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/whitebalance_custom2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/whitebalance_custom2.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/whitebalance_custom3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/whitebalance_custom3.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/whitebalance_custom4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/whitebalance_custom4.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/whitebalance_custom5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/whitebalance_custom5.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/whitebalance_daylight.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/whitebalance_daylight.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/whitebalance_manual1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/whitebalance_manual1.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/whitebalance_manual2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/whitebalance_manual2.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/whitebalance_manual3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/whitebalance_manual3.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/whitebalance_manual4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/whitebalance_manual4.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/whitebalance_manual5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/whitebalance_manual5.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/whitebalance_tungsten.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/whitebalance_tungsten.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/whitebalance_unknown.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/whitebalance_unknown.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/batterylevel_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/batterylevel_0.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/shootingmode_m.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/shootingmode_m.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/batterylevel_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/batterylevel_0.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/shootingmode_m.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/shootingmode_m.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/metering_af_3d_tracking.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/metering_af_3d_tracking.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/metering_af_dynamic_area.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/metering_af_dynamic_area.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/metering_af_single_point.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/metering_af_single_point.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/metering_exposure_spot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/metering_exposure_spot.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/shootingmode_flash_off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/shootingmode_flash_off.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/shootingmode_landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/shootingmode_landscape.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/whitebalance_fluorescent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/whitebalance_fluorescent.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/metering_af_3d_tracking.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/metering_af_3d_tracking.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/metering_af_dynamic_area.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/metering_af_dynamic_area.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/metering_af_single_point.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/metering_af_single_point.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/metering_exposure_spot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/metering_exposure_spot.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/shootingmode_flash_off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/shootingmode_flash_off.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/shootingmode_landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/shootingmode_landscape.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/whitebalance_fluorescent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/whitebalance_fluorescent.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/batterylevel_10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/batterylevel_10.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/batterylevel_100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/batterylevel_100.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/batterylevel_20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/batterylevel_20.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/batterylevel_30.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/batterylevel_30.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/batterylevel_40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/batterylevel_40.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/batterylevel_50.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/batterylevel_50.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/batterylevel_60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/batterylevel_60.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/batterylevel_70.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/batterylevel_70.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/batterylevel_80.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/batterylevel_80.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/batterylevel_90.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/batterylevel_90.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/shootingmode_adep.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/shootingmode_adep.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/shootingmode_auto.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/shootingmode_auto.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/shootingmode_av.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/shootingmode_av.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/shootingmode_bulb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/shootingmode_bulb.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/shootingmode_ca.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/shootingmode_ca.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/shootingmode_dep.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/shootingmode_dep.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/shootingmode_lock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/shootingmode_lock.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/shootingmode_tv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/shootingmode_tv.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/whitebalance_auto.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/whitebalance_auto.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/batterylevel_10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/batterylevel_10.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/batterylevel_100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/batterylevel_100.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/batterylevel_20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/batterylevel_20.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/batterylevel_30.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/batterylevel_30.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/batterylevel_40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/batterylevel_40.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/batterylevel_50.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/batterylevel_50.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/batterylevel_60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/batterylevel_60.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/batterylevel_70.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/batterylevel_70.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/batterylevel_80.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/batterylevel_80.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/batterylevel_90.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/batterylevel_90.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/shootingmode_adep.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/shootingmode_adep.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/shootingmode_auto.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/shootingmode_auto.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/shootingmode_av.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/shootingmode_av.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/shootingmode_bulb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/shootingmode_bulb.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/shootingmode_ca.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/shootingmode_ca.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/shootingmode_dep.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/shootingmode_dep.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/shootingmode_lock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/shootingmode_lock.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/shootingmode_tv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/shootingmode_tv.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/whitebalance_auto.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/whitebalance_auto.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/metering_exposure_partial.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/metering_exposure_partial.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/shootingmode_creativeauto.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/shootingmode_creativeauto.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/metering_exposure_partial.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/metering_exposure_partial.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/shootingmode_creativeauto.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/shootingmode_creativeauto.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/shootingmode_sports.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/shootingmode_sports.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/whitebalance_cloudy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/whitebalance_cloudy.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/whitebalance_flash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/whitebalance_flash.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/whitebalance_shade.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/whitebalance_shade.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/shootingmode_sports.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/shootingmode_sports.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/whitebalance_cloudy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/whitebalance_cloudy.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/whitebalance_flash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/whitebalance_flash.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/whitebalance_shade.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/whitebalance_shade.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/metering_af_auto_area.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/metering_af_auto_area.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/metering_exposure_spot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/metering_exposure_spot.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/shootingmode_close_up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/shootingmode_close_up.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/shootingmode_flash_off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/shootingmode_flash_off.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/shootingmode_landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/shootingmode_landscape.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/shootingmode_portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/shootingmode_portrait.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/shootingmode_program.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/shootingmode_program.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/shootingmode_unknown.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/shootingmode_unknown.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/whitebalance_custom1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/whitebalance_custom1.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/whitebalance_custom2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/whitebalance_custom2.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/whitebalance_custom3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/whitebalance_custom3.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/whitebalance_custom4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/whitebalance_custom4.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/whitebalance_custom5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/whitebalance_custom5.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/whitebalance_daylight.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/whitebalance_daylight.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/whitebalance_manual1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/whitebalance_manual1.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/whitebalance_manual2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/whitebalance_manual2.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/whitebalance_manual3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/whitebalance_manual3.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/whitebalance_manual4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/whitebalance_manual4.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/whitebalance_manual5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/whitebalance_manual5.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/whitebalance_tungsten.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/whitebalance_tungsten.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/whitebalance_unknown.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/whitebalance_unknown.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/metering_af_auto_area.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/metering_af_auto_area.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/metering_exposure_spot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/metering_exposure_spot.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/shootingmode_close_up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/shootingmode_close_up.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/shootingmode_flash_off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/shootingmode_flash_off.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/shootingmode_landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/shootingmode_landscape.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/shootingmode_portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/shootingmode_portrait.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/shootingmode_program.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/shootingmode_program.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/shootingmode_unknown.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/shootingmode_unknown.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/whitebalance_custom1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/whitebalance_custom1.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/whitebalance_custom2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/whitebalance_custom2.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/whitebalance_custom3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/whitebalance_custom3.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/whitebalance_custom4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/whitebalance_custom4.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/whitebalance_custom5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/whitebalance_custom5.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/whitebalance_daylight.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/whitebalance_daylight.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/whitebalance_manual1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/whitebalance_manual1.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/whitebalance_manual2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/whitebalance_manual2.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/whitebalance_manual3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/whitebalance_manual3.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/whitebalance_manual4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/whitebalance_manual4.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/whitebalance_manual5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/whitebalance_manual5.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/whitebalance_tungsten.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/whitebalance_tungsten.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/whitebalance_unknown.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/whitebalance_unknown.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/metering_exposure_matrix_nikon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/metering_exposure_matrix_nikon.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/whitebalance_color_temperature.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/whitebalance_color_temperature.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/metering_exposure_matrix_nikon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/metering_exposure_matrix_nikon.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/whitebalance_color_temperature.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/whitebalance_color_temperature.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/metering_af_3d_tracking.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/metering_af_3d_tracking.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/metering_af_dynamic_area.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/metering_af_dynamic_area.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/metering_af_single_point.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/metering_af_single_point.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/whitebalance_fluorescent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/whitebalance_fluorescent.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/metering_af_3d_tracking.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/metering_af_3d_tracking.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/metering_af_dynamic_area.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/metering_af_dynamic_area.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/metering_af_single_point.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/metering_af_single_point.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/whitebalance_fluorescent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/whitebalance_fluorescent.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/metering_exposure_evaluative_canon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/metering_exposure_evaluative_canon.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/shootingmode_night_scene_portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/shootingmode_night_scene_portrait.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/metering_exposure_evaluative_canon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/metering_exposure_evaluative_canon.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/shootingmode_night_scene_portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/shootingmode_night_scene_portrait.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/metering_exposure_partial.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/metering_exposure_partial.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/shootingmode_creativeauto.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/shootingmode_creativeauto.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/metering_exposure_partial.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/metering_exposure_partial.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/shootingmode_creativeauto.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/shootingmode_creativeauto.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/metering_exposure_center_weighted_nikon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/metering_exposure_center_weighted_nikon.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/metering_exposure_center_weighted_nikon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/metering_exposure_center_weighted_nikon.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/metering_exposure_matrix_nikon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/metering_exposure_matrix_nikon.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/whitebalance_color_temperature.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/whitebalance_color_temperature.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/metering_exposure_matrix_nikon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/metering_exposure_matrix_nikon.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/whitebalance_color_temperature.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/whitebalance_color_temperature.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/metering_exposure_evaluative_canon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/metering_exposure_evaluative_canon.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/shootingmode_night_scene_portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/shootingmode_night_scene_portrait.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/metering_exposure_evaluative_canon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/metering_exposure_evaluative_canon.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/shootingmode_night_scene_portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/shootingmode_night_scene_portrait.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/metering_exposure_center_weighted_nikon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/metering_exposure_center_weighted_nikon.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/metering_exposure_center_weighted_nikon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/metering_exposure_center_weighted_nikon.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/metering_exposure_center_weighted_average_canon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-hdpi/metering_exposure_center_weighted_average_canon.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/metering_exposure_center_weighted_average_canon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-mdpi/metering_exposure_center_weighted_average_canon.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-hdpi/metering_exposure_center_weighted_average_canon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-hdpi/metering_exposure_center_weighted_average_canon.png
--------------------------------------------------------------------------------
/res/drawable-xlarge-mdpi/metering_exposure_center_weighted_average_canon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelzoech/remoteyourcam-usb/HEAD/res/drawable-xlarge-mdpi/metering_exposure_center_weighted_average_canon.png
--------------------------------------------------------------------------------
/project.properties:
--------------------------------------------------------------------------------
1 | # This file is automatically generated by Android Tools.
2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED!
3 | #
4 | # This file must be checked in Version Control Systems.
5 | #
6 | # To customize properties used by the Ant build system use,
7 | # "ant.properties", and override values to adapt the script to your
8 | # project structure.
9 |
10 | proguard.config=proguard.cfg
11 | # Project target.
12 | target=android-12
13 |
--------------------------------------------------------------------------------
/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/assets/changelog/changelog.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 |
3 | body
4 | {
5 | padding: 0px;
6 | margin-top: 4px;
7 | margin-right: 4px;
8 | margin-bottom: 4px;
9 | margin-left: 10px;
10 | border: 0px;
11 | font-family: Helvetica, Arial, sans-serif;
12 | font-size: 15px;
13 | }
14 |
15 | h2
16 | {
17 | font-size: 18px;
18 | text-align: left;
19 | margin-bottom: 5px;
20 | paddin-bottom: 0;
21 | }
22 |
23 | h3 {
24 | font-size: 16px;
25 | text-align: left;
26 | padding: 0px 5px 0px 0px;
27 | margin: 0px 5px 0px 0px;
28 | }
29 |
30 | p
31 | {
32 | margin: 0px;
33 | }
34 |
35 | li
36 | {
37 | padding: 5px 0px 0px 0px;
38 | margin: 0px;
39 | }
40 |
41 | ul
42 | {
43 | padding-left: 25px;
44 | padding-right: 10px;
45 | margin: 0px;
46 | }
47 |
--------------------------------------------------------------------------------
/res/values/config.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | true
20 |
21 |
--------------------------------------------------------------------------------
/res/values/ids.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/view/BaseFragment.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.view;
17 |
18 | import android.app.Fragment;
19 |
20 | public class BaseFragment extends Fragment {
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/res/drawable/window_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | ryc-usb-oss
4 |
5 |
6 |
7 |
8 |
9 | com.android.ide.eclipse.adt.ResourceManagerBuilder
10 |
11 |
12 |
13 |
14 | com.android.ide.eclipse.adt.PreCompilerBuilder
15 |
16 |
17 |
18 |
19 | org.eclipse.jdt.core.javabuilder
20 |
21 |
22 |
23 |
24 | com.android.ide.eclipse.adt.ApkBuilder
25 |
26 |
27 |
28 |
29 |
30 | com.android.ide.eclipse.adt.AndroidNature
31 | org.eclipse.jdt.core.javanature
32 |
33 |
34 |
--------------------------------------------------------------------------------
/res/layout/session.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
22 |
23 |
--------------------------------------------------------------------------------
/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | #ffdddddd
20 | #aadddddd
21 | #ffbbbbbb
22 | #ffffffff
23 |
24 |
--------------------------------------------------------------------------------
/res/xml/device_filter.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
25 |
26 |
31 |
32 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/util/DimenUtil.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.util;
17 |
18 | import android.content.Context;
19 | import android.util.TypedValue;
20 |
21 | public class DimenUtil {
22 |
23 | public static float dpToPx(Context c, float dp) {
24 | return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, c.getResources().getDisplayMetrics());
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/AppConfig.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb;
17 |
18 | public class AppConfig {
19 | public static final boolean LOG = true;
20 | public static final boolean USE_ACRA = false;
21 | public static final boolean LOG_PACKETS = false;
22 |
23 | public static final int EVENTCHECK_PERIOD = 700;
24 | public static final int USB_TRANSFER_TIMEOUT = 30000;
25 | }
26 |
--------------------------------------------------------------------------------
/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | 60dp
20 | 48dp
21 | 120dp
22 | 240dp
23 | 120dp
24 | 3dp
25 |
26 |
--------------------------------------------------------------------------------
/res/values-large/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | 80dp
20 | 65dp
21 | 165dp
22 | 320dp
23 | 180dp
24 | 5dp
25 |
26 |
--------------------------------------------------------------------------------
/res/values-xlarge/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | 100dp
20 | 80dp
21 | 200dp
22 | 400dp
23 | 240dp
24 | 10dp
25 |
26 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/ptp/FocusPoint.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.ptp;
17 |
18 | public class FocusPoint {
19 | public int id;
20 | public float posx;
21 | public float posy;
22 | public float radius;
23 |
24 | public FocusPoint(int id, float posx, float posy, float radius) {
25 | this.id = id;
26 | this.posx = posx;
27 | this.posy = posy;
28 | this.radius = radius;
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/ptp/commands/eos/EosCommand.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.ptp.commands.eos;
17 |
18 | import com.remoteyourcam.usb.ptp.EosCamera;
19 | import com.remoteyourcam.usb.ptp.commands.Command;
20 |
21 | public abstract class EosCommand extends Command {
22 |
23 | protected EosCamera camera;
24 |
25 | public EosCommand(EosCamera camera) {
26 | super(camera);
27 | this.camera = camera;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/res/layout/property_icon_list_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
24 |
25 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/ptp/commands/nikon/NikonCommand.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.ptp.commands.nikon;
17 |
18 | import com.remoteyourcam.usb.ptp.NikonCamera;
19 | import com.remoteyourcam.usb.ptp.commands.Command;
20 |
21 | public abstract class NikonCommand extends Command {
22 |
23 | protected NikonCamera camera;
24 |
25 | public NikonCommand(NikonCamera camera) {
26 | super(camera);
27 | this.camera = camera;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/view/SessionActivity.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.view;
17 |
18 | import android.app.Activity;
19 |
20 | import com.remoteyourcam.usb.AppSettings;
21 | import com.remoteyourcam.usb.ptp.Camera;
22 |
23 | public abstract class SessionActivity extends Activity {
24 |
25 | public abstract Camera getCamera();
26 |
27 | public abstract void setSessionView(SessionView view);
28 |
29 | public abstract AppSettings getSettings();
30 | }
31 |
--------------------------------------------------------------------------------
/res/layout/property_list_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
25 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/ptp/EosConstants.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.ptp;
17 |
18 | public class EosConstants {
19 |
20 | public static class EvfOutputDevice {
21 | public static final int DISABLE = 0x0;
22 | public static final int TFT = 0x01;
23 | public static final int PC = 0x02;
24 | }
25 |
26 | public static class EvfMode {
27 | public static final int DISABLE = 0;
28 | public static final int ENABLE = 1;
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/NOTICE.txt:
--------------------------------------------------------------------------------
1 | This product uses ACRA
2 | Copyright (C) 2013 Kevin Gaudin
3 |
4 | Licensed under the Apache License, Version 2.0 (the "License");
5 | you may not use this file except in compliance with the License.
6 | You may obtain a copy of the License at
7 |
8 | http://www.apache.org/licenses/LICENSE-2.0
9 |
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 |
16 |
17 |
18 | This product uses materials from the Android Platform Base.
19 | Copyright (C) 2007 The Android Open Source Project
20 |
21 | Licensed under the Apache License, Version 2.0 (the "License");
22 | you may not use this file except in compliance with the License.
23 | You may obtain a copy of the License at
24 |
25 | http://www.apache.org/licenses/LICENSE-2.0
26 |
27 | Unless required by applicable law or agreed to in writing, software
28 | distributed under the License is distributed on an "AS IS" BASIS,
29 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
30 | See the License for the specific language governing permissions and
31 | limitations under the License.
32 |
--------------------------------------------------------------------------------
/res/layout/picture_frag.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
20 |
21 |
25 |
26 |
27 |
33 |
34 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/ptp/PtpAction.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.ptp;
17 |
18 | /**
19 | * {@code PtpActions} execute one or more {@code Command}s against the actual
20 | * hardware.
21 | *
22 | * A {@code PtpCamera} queues {@Code PtpAction}s into the worker thread
23 | * for further communications. The action should do the communication via the
24 | * given {@code IO} interface and based on the received data and response repor
25 | * back to the actual {@code PtpCamera}.
26 | */
27 | public interface PtpAction {
28 |
29 | void exec(PtpCamera.IO io);
30 |
31 | /**
32 | * Reset an already used action so it can be re-used.
33 | */
34 | void reset();
35 | }
36 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/util/NotificationIds.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.util;
17 |
18 | import java.util.HashMap;
19 | import java.util.Map;
20 |
21 | public class NotificationIds {
22 |
23 | private static NotificationIds instance = new NotificationIds();
24 |
25 | public static NotificationIds getInstance() {
26 | return instance;
27 | }
28 |
29 | private final Map map = new HashMap();
30 | private int counter;
31 |
32 | public int getUniqueIdentifier(String name) {
33 | Integer i = map.get(name);
34 | if (i != null) {
35 | return i.intValue();
36 | }
37 | ++counter;
38 | map.put(name, counter);
39 | return counter;
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/res/menu/main_menu.xml:
--------------------------------------------------------------------------------
1 |
16 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/ptp/model/LiveViewData.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.ptp.model;
17 |
18 | import java.nio.ByteBuffer;
19 |
20 | import android.graphics.Bitmap;
21 |
22 | public class LiveViewData {
23 |
24 | public Bitmap bitmap;
25 |
26 | public int zoomFactor;
27 | public int zoomRectLeft;
28 | public int zoomRectTop;
29 | public int zoomRectRight;
30 | public int zoomRectBottom;
31 |
32 | public boolean hasHistogram;
33 | public ByteBuffer histogram;
34 |
35 | // dimensions are in bitmap size
36 | public boolean hasAfFrame;
37 | public int nikonAfFrameCenterX;
38 | public int nikonAfFrameCenterY;
39 | public int nikonAfFrameWidth;
40 | public int nikonAfFrameHeight;
41 |
42 | public int nikonWholeWidth;
43 | public int nikonWholeHeight;
44 | }
45 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/RycApplication.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb;
17 |
18 |
19 | //@ReportsCrashes(formKey = "YOUR_KEY_HERE",
20 | // mode = ReportingInteractionMode.NOTIFICATION,
21 | // resNotifTickerText = R.string.crash_notif_ticker_text,
22 | // resNotifTitle = R.string.crash_notif_title,
23 | // resNotifText = R.string.crash_notif_text,
24 | // resNotifIcon = android.R.drawable.stat_notify_error,
25 | // resDialogText = R.string.crash_dialog_text,
26 | // resDialogIcon = android.R.drawable.ic_dialog_info,
27 | // resDialogTitle = R.string.crash_dialog_title,
28 | // resDialogCommentPrompt = R.string.crash_dialog_comment_prompt,
29 | // resDialogOkToast = R.string.crash_dialog_ok_toast)
30 | public class RycApplication extends AbstractRycApplication {
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/activities/AppSettingsActivity.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.activities;
17 |
18 | import android.content.Context;
19 | import android.os.Bundle;
20 | import android.preference.PreferenceActivity;
21 | import android.preference.PreferenceManager;
22 |
23 | import com.remoteyourcam.usb.R;
24 |
25 | public class AppSettingsActivity extends PreferenceActivity {
26 |
27 | @Override
28 | protected void onCreate(Bundle savedInstanceState) {
29 | super.onCreate(savedInstanceState);
30 | getPreferenceManager().setSharedPreferencesMode(Context.MODE_PRIVATE);
31 | getPreferenceManager().setSharedPreferencesName("app_settings");
32 | PreferenceManager.setDefaultValues(this, R.xml.app_settings_preferences, false);
33 | addPreferencesFromResource(R.xml.app_settings_preferences);
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/res/layout/thumbnail_list_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
20 |
21 |
27 |
28 |
36 |
37 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/util/PackageUtil.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.util;
17 |
18 | import android.content.Context;
19 | import android.content.pm.PackageManager.NameNotFoundException;
20 |
21 |
22 | public class PackageUtil {
23 |
24 | public static String getVersionName(Context context) {
25 | try {
26 | return context.getPackageManager().getPackageInfo(context.getApplicationInfo().packageName, 0).versionName;
27 | } catch (android.content.pm.PackageManager.NameNotFoundException e) {
28 | return "";
29 | }
30 | }
31 |
32 | public static int getVersionCode(Context context) {
33 | try {
34 | return context.getPackageManager().getPackageInfo(context.getApplicationInfo().packageName, 0).versionCode;
35 | } catch (NameNotFoundException e) {
36 | return 0;
37 | }
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/view/SessionFragment.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.view;
17 |
18 | import com.remoteyourcam.usb.AppSettings;
19 | import com.remoteyourcam.usb.ptp.Camera;
20 |
21 | public abstract class SessionFragment extends BaseFragment implements SessionView {
22 |
23 | protected boolean inStart;
24 |
25 | protected Camera camera() {
26 | if (getActivity() == null) {
27 | return null;
28 | }
29 | return ((SessionActivity) getActivity()).getCamera();
30 | }
31 |
32 | protected AppSettings getSettings() {
33 | return ((SessionActivity) getActivity()).getSettings();
34 | }
35 |
36 | @Override
37 | public void onStart() {
38 | super.onStart();
39 | inStart = true;
40 | }
41 |
42 | @Override
43 | public void onStop() {
44 | super.onStop();
45 | inStart = false;
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/ptp/commands/eos/EosTakePictureCommand.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.ptp.commands.eos;
17 |
18 | import java.nio.ByteBuffer;
19 |
20 | import com.remoteyourcam.usb.ptp.EosCamera;
21 | import com.remoteyourcam.usb.ptp.PtpCamera.IO;
22 | import com.remoteyourcam.usb.ptp.PtpConstants.Operation;
23 | import com.remoteyourcam.usb.ptp.PtpConstants.Response;
24 |
25 | public class EosTakePictureCommand extends EosCommand {
26 |
27 | public EosTakePictureCommand(EosCamera camera) {
28 | super(camera);
29 | }
30 |
31 | @Override
32 | public void exec(IO io) {
33 | io.handleCommand(this);
34 | if (responseCode == Response.DeviceBusy) {
35 | camera.onDeviceBusy(this, true);
36 | }
37 | }
38 |
39 | @Override
40 | public void encodeCommand(ByteBuffer b) {
41 | encodeCommand(b, Operation.EosTakePicture);
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/res/layout/property_listview.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
22 |
23 |
29 |
30 |
35 |
36 |
41 |
42 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/ptp/PtpService.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.ptp;
17 |
18 | import com.remoteyourcam.usb.ptp.Camera.CameraListener;
19 |
20 | import android.content.Context;
21 | import android.content.Intent;
22 |
23 | public interface PtpService {
24 |
25 | void setCameraListener(CameraListener listener);
26 |
27 | void initialize(Context context, Intent intent);
28 |
29 | void shutdown();
30 |
31 | void lazyShutdown();
32 |
33 | public static class Singleton {
34 | private static PtpService singleton;
35 |
36 | public static PtpService getInstance(Context context) {
37 | if (singleton == null) {
38 | singleton = new PtpUsbService(context);
39 | }
40 | return singleton;
41 | }
42 |
43 | public static void setInstance(PtpService service) {
44 | singleton = service;
45 | }
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/ptp/commands/InitiateCaptureCommand.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.ptp.commands;
17 |
18 | import java.nio.ByteBuffer;
19 |
20 | import com.remoteyourcam.usb.ptp.PtpCamera;
21 | import com.remoteyourcam.usb.ptp.PtpCamera.IO;
22 | import com.remoteyourcam.usb.ptp.PtpConstants.Operation;
23 | import com.remoteyourcam.usb.ptp.PtpConstants.Response;
24 |
25 | public class InitiateCaptureCommand extends Command {
26 |
27 | public InitiateCaptureCommand(PtpCamera camera) {
28 | super(camera);
29 | }
30 |
31 | @Override
32 | public void exec(IO io) {
33 | io.handleCommand(this);
34 | if (responseCode == Response.DeviceBusy) {
35 | camera.onDeviceBusy(this, true); // TODO when nikon live view is enabled this stalls
36 | return;
37 | }
38 | }
39 |
40 | @Override
41 | public void encodeCommand(ByteBuffer b) {
42 | encodeCommand(b, Operation.InitiateCapture, 0, 0);
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/ptp/commands/nikon/NikonAfDriveDeviceReadyCommand.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.ptp.commands.nikon;
17 |
18 | import java.nio.ByteBuffer;
19 |
20 | import com.remoteyourcam.usb.ptp.NikonCamera;
21 | import com.remoteyourcam.usb.ptp.PtpCamera.IO;
22 | import com.remoteyourcam.usb.ptp.PtpConstants.Operation;
23 | import com.remoteyourcam.usb.ptp.PtpConstants.Response;
24 |
25 | public class NikonAfDriveDeviceReadyCommand extends NikonCommand {
26 |
27 | public NikonAfDriveDeviceReadyCommand(NikonCamera camera) {
28 | super(camera);
29 | }
30 |
31 | @Override
32 | public void exec(IO io) {
33 | io.handleCommand(this);
34 | if (getResponseCode() == Response.DeviceBusy) {
35 | reset();
36 | camera.enqueue(this, 200);
37 | } else {
38 | camera.onFocusEnded(getResponseCode() == Response.Ok);
39 | }
40 | }
41 |
42 | @Override
43 | public void encodeCommand(ByteBuffer b) {
44 | encodeCommand(b, Operation.NikonDeviceReady);
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
2 |
3 | Licensed under the Apache License, Version 2.0 (the "License");
4 | you may not use this file except in compliance with the License.
5 | You may obtain a copy of the License at
6 |
7 | http://www.apache.org/licenses/LICENSE-2.0
8 |
9 | Unless required by applicable law or agreed to in writing, software
10 | distributed under the License is distributed on an "AS IS" BASIS,
11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | See the License for the specific language governing permissions and
13 | limitations under the License.
14 |
15 | ## Remote Your Cam OSS
16 |
17 | This Android app allows you to control a Canon or Nikon DSLR camera through USB.
18 | Since we no longer have time developing this app we decided to open source the code.
19 | Maybe someone else wants to base their own app on this.
20 |
21 | ### Features
22 |
23 | * Capture photos
24 | * Review your taken photos
25 | * Display current exposure mode
26 | * Bulb shooting (Canon only)
27 | * Live View
28 | * Histogram (Canon only)
29 | * Drive Focus
30 | * Adjustable duration of the captured picture in Live View mode
31 | * Zooming and panning in active Live View
32 | * Gallery with fullscreen picture review, zooming and panning
33 | * Picture stream showing captured pictures
34 | * Control of the following properties:
35 | * White balance
36 | * Shutter speed
37 | * Iso sensitivity
38 | * Aperture priority
39 | * Color temperature
40 | * Auto focus metering mode (Nikon only)
41 | * Setting the focus point (Nikon only)
42 | * Setting the focus rectangle in live view (Nikon only)
43 | * Exposure Compensation
44 |
45 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/ptp/model/StorageInfo.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.ptp.model;
17 |
18 | import java.nio.ByteBuffer;
19 |
20 | import com.remoteyourcam.usb.ptp.PacketUtil;
21 |
22 | public class StorageInfo {
23 |
24 | public int storageType;
25 | public int filesystemType;
26 | public int accessCapability;
27 | public long maxCapacity;
28 | public long freeSpaceInBytes;
29 | public int freeSpaceInImages;
30 | public String storageDescription;
31 | public String volumeLabel;
32 |
33 | public StorageInfo(ByteBuffer b, int length) {
34 | decode(b, length);
35 | }
36 |
37 | private void decode(ByteBuffer b, int length) {
38 | storageType = b.getShort() & 0xffff;
39 | filesystemType = b.getShort() & 0xffff;
40 | accessCapability = b.getShort() & 0xff;
41 | maxCapacity = b.getLong();
42 | freeSpaceInBytes = b.getLong();
43 | freeSpaceInImages = b.getInt();
44 | storageDescription = PacketUtil.readString(b);
45 | volumeLabel = PacketUtil.readString(b);
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/ptp/commands/eos/EosSetPcModeCommand.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.ptp.commands.eos;
17 |
18 | import java.nio.ByteBuffer;
19 |
20 | import com.remoteyourcam.usb.ptp.EosCamera;
21 | import com.remoteyourcam.usb.ptp.PtpConstants;
22 | import com.remoteyourcam.usb.ptp.PtpCamera.IO;
23 | import com.remoteyourcam.usb.ptp.PtpConstants.Operation;
24 | import com.remoteyourcam.usb.ptp.PtpConstants.Response;
25 |
26 | public class EosSetPcModeCommand extends EosCommand {
27 |
28 | public EosSetPcModeCommand(EosCamera camera) {
29 | super(camera);
30 | }
31 |
32 | @Override
33 | public void exec(IO io) {
34 | io.handleCommand(this);
35 | if (responseCode != Response.Ok) {
36 | camera.onPtpError(String.format("Couldn't initialize session! setting PC Mode failed, error code %s",
37 | PtpConstants.responseToString(responseCode)));
38 | }
39 | }
40 |
41 | @Override
42 | public void encodeCommand(ByteBuffer b) {
43 | encodeCommand(b, Operation.EosSetPCConnectMode, 1);
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/ptp/commands/nikon/NikonAfDriveCommand.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.ptp.commands.nikon;
17 |
18 | import java.nio.ByteBuffer;
19 |
20 | import com.remoteyourcam.usb.ptp.NikonCamera;
21 | import com.remoteyourcam.usb.ptp.PtpCamera.IO;
22 | import com.remoteyourcam.usb.ptp.PtpConstants.Operation;
23 | import com.remoteyourcam.usb.ptp.PtpConstants.Response;
24 |
25 | public class NikonAfDriveCommand extends NikonCommand {
26 |
27 | public NikonAfDriveCommand(NikonCamera camera) {
28 | super(camera);
29 | }
30 |
31 | @Override
32 | public void exec(IO io) {
33 | // if (camera.isInActivationTypePhase()) {
34 | // return;
35 | // }
36 | io.handleCommand(this);
37 | if (getResponseCode() == Response.Ok) {
38 | camera.onFocusStarted();
39 | camera.enqueue(new NikonAfDriveDeviceReadyCommand(camera), 200);
40 | }
41 | }
42 |
43 | @Override
44 | public void encodeCommand(ByteBuffer b) {
45 | encodeCommand(b, Operation.NikonAfDrive);
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/res/layout/gallery_list_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
21 |
22 |
28 |
29 |
34 |
35 |
40 |
41 |
46 |
47 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/ptp/commands/GetStorageIdsCommand.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.ptp.commands;
17 |
18 | import java.nio.ByteBuffer;
19 |
20 | import com.remoteyourcam.usb.ptp.PacketUtil;
21 | import com.remoteyourcam.usb.ptp.PtpCamera;
22 | import com.remoteyourcam.usb.ptp.PtpCamera.IO;
23 | import com.remoteyourcam.usb.ptp.PtpConstants;
24 |
25 | public class GetStorageIdsCommand extends Command {
26 |
27 | private int[] storageIds;
28 |
29 | public int[] getStorageIds() {
30 | if (storageIds == null) {
31 | return new int[0];
32 | }
33 | return storageIds;
34 | }
35 |
36 | public GetStorageIdsCommand(PtpCamera camera) {
37 | super(camera);
38 | }
39 |
40 | @Override
41 | public void exec(IO io) {
42 | io.handleCommand(this);
43 | }
44 |
45 | @Override
46 | public void encodeCommand(ByteBuffer b) {
47 | super.encodeCommand(b, PtpConstants.Operation.GetStorageIDs);
48 | }
49 |
50 | @Override
51 | protected void decodeData(ByteBuffer b, int length) {
52 | storageIds = PacketUtil.readU32Array(b);
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/ptp/commands/nikon/NikonGetVendorPropCodesCommand.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.ptp.commands.nikon;
17 |
18 | import java.nio.ByteBuffer;
19 |
20 | import com.remoteyourcam.usb.ptp.NikonCamera;
21 | import com.remoteyourcam.usb.ptp.PacketUtil;
22 | import com.remoteyourcam.usb.ptp.PtpCamera.IO;
23 | import com.remoteyourcam.usb.ptp.PtpConstants.Operation;
24 |
25 | public class NikonGetVendorPropCodesCommand extends NikonCommand {
26 |
27 | private int[] propertyCodes = new int[0];
28 |
29 | public NikonGetVendorPropCodesCommand(NikonCamera camera) {
30 | super(camera);
31 | }
32 |
33 | public int[] getPropertyCodes() {
34 | return propertyCodes;
35 | }
36 |
37 | @Override
38 | public void exec(IO io) {
39 | throw new UnsupportedOperationException();
40 | }
41 |
42 | @Override
43 | public void encodeCommand(ByteBuffer b) {
44 | encodeCommand(b, Operation.NikonGetVendorPropCodes);
45 | }
46 |
47 | @Override
48 | protected void decodeData(ByteBuffer b, int length) {
49 | propertyCodes = PacketUtil.readU16Array(b);
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/AbstractRycApplication.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb;
17 |
18 | import android.app.Application;
19 |
20 | import org.acra.ACRA;
21 |
22 | // @ReportsCrashes(formKey = "YOUR_KEY_HERE",
23 | // mode = ReportingInteractionMode.NOTIFICATION,
24 | // resNotifTickerText = R.string.crash_notif_ticker_text,
25 | // resNotifTitle = R.string.crash_notif_title,
26 | // resNotifText = R.string.crash_notif_text,
27 | // resNotifIcon = android.R.drawable.stat_notify_error,
28 | // resDialogText = R.string.crash_dialog_text,
29 | // resDialogIcon = android.R.drawable.ic_dialog_info,
30 | // resDialogTitle = R.string.crash_dialog_title,
31 | // resDialogCommentPrompt = R.string.crash_dialog_comment_prompt,
32 | // resDialogOkToast = R.string.crash_dialog_ok_toast)
33 | public abstract class AbstractRycApplication extends Application {
34 |
35 | @Override
36 | public void onCreate() {
37 | if (AppConfig.USE_ACRA) {
38 | try {
39 | ACRA.init(this);
40 | } catch (Throwable e) {
41 | // no fail
42 | }
43 | }
44 | super.onCreate();
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/ptp/commands/OpenSessionCommand.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.ptp.commands;
17 |
18 | import java.nio.ByteBuffer;
19 |
20 | import com.remoteyourcam.usb.ptp.PtpCamera;
21 | import com.remoteyourcam.usb.ptp.PtpConstants;
22 | import com.remoteyourcam.usb.ptp.PtpCamera.IO;
23 | import com.remoteyourcam.usb.ptp.PtpConstants.Operation;
24 | import com.remoteyourcam.usb.ptp.PtpConstants.Response;
25 |
26 | public class OpenSessionCommand extends Command {
27 |
28 | public OpenSessionCommand(PtpCamera camera) {
29 | super(camera);
30 | }
31 |
32 | @Override
33 | public void exec(IO io) {
34 | io.handleCommand(this);
35 | if (responseCode == Response.Ok) {
36 | camera.onSessionOpened();
37 | } else {
38 | camera.onPtpError(String.format("Couldn't open session, error code \"%s\"",
39 | PtpConstants.responseToString(responseCode)));
40 | }
41 | }
42 |
43 | @Override
44 | public void encodeCommand(ByteBuffer b) {
45 | camera.resetTransactionId();
46 | encodeCommand(b, Operation.OpenSession, 1);
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/ptp/commands/eos/EosSetExtendedEventInfoCommand.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.ptp.commands.eos;
17 |
18 | import java.nio.ByteBuffer;
19 |
20 | import com.remoteyourcam.usb.ptp.EosCamera;
21 | import com.remoteyourcam.usb.ptp.PtpConstants;
22 | import com.remoteyourcam.usb.ptp.PtpCamera.IO;
23 | import com.remoteyourcam.usb.ptp.PtpConstants.Operation;
24 | import com.remoteyourcam.usb.ptp.PtpConstants.Response;
25 |
26 | public class EosSetExtendedEventInfoCommand extends EosCommand {
27 |
28 | public EosSetExtendedEventInfoCommand(EosCamera camera) {
29 | super(camera);
30 | }
31 |
32 | @Override
33 | public void exec(IO io) {
34 | io.handleCommand(this);
35 | if (responseCode != Response.Ok) {
36 | camera.onPtpError(String.format(
37 | "Couldn't initialize session! Setting extended event info failed, error code %s",
38 | PtpConstants.responseToString(responseCode)));
39 | }
40 | }
41 |
42 | @Override
43 | public void encodeCommand(ByteBuffer b) {
44 | encodeCommand(b, Operation.EosSetEventMode, 1);
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/view/SessionView.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.view;
17 |
18 | import android.graphics.Bitmap;
19 |
20 | import com.remoteyourcam.usb.ptp.Camera;
21 | import com.remoteyourcam.usb.ptp.model.LiveViewData;
22 |
23 | public interface SessionView {
24 |
25 | public abstract void enableUi(boolean enabled);
26 |
27 | public abstract void cameraStarted(Camera camera);
28 |
29 | public abstract void cameraStopped(Camera camera);
30 |
31 | public abstract void propertyChanged(int property, int value);
32 |
33 | public abstract void propertyDescChanged(int property, int[] values);
34 |
35 | public abstract void setCaptureBtnText(String text);
36 |
37 | public abstract void focusStarted();
38 |
39 | public abstract void focusEnded(boolean hasFocused);
40 |
41 | public abstract void liveViewStarted();
42 |
43 | public abstract void liveViewStopped();
44 |
45 | public abstract void liveViewData(LiveViewData data);
46 |
47 | public abstract void capturedPictureReceived(int objectHandle, String filename, Bitmap thumbnail, Bitmap bitmap);
48 |
49 | public abstract void objectAdded(int handle, int format);
50 | }
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/ptp/commands/GetStorageInfoCommand.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.ptp.commands;
17 |
18 | import java.nio.ByteBuffer;
19 |
20 | import com.remoteyourcam.usb.ptp.PtpCamera;
21 | import com.remoteyourcam.usb.ptp.PtpCamera.IO;
22 | import com.remoteyourcam.usb.ptp.PtpConstants;
23 | import com.remoteyourcam.usb.ptp.model.StorageInfo;
24 |
25 | public class GetStorageInfoCommand extends Command {
26 |
27 | private StorageInfo storageInfo;
28 | private final int storageId;
29 |
30 | public StorageInfo getStorageInfo() {
31 | return storageInfo;
32 | }
33 |
34 | public GetStorageInfoCommand(PtpCamera camera, int storageId) {
35 | super(camera);
36 | this.storageId = storageId;
37 | }
38 |
39 | @Override
40 | public void exec(IO io) {
41 | io.handleCommand(this);
42 | }
43 |
44 | @Override
45 | public void encodeCommand(ByteBuffer b) {
46 | super.encodeCommand(b, PtpConstants.Operation.GetStorageInfo, storageId);
47 | }
48 |
49 | @Override
50 | protected void decodeData(ByteBuffer b, int length) {
51 | storageInfo = new StorageInfo(b, length);
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/res/layout/webview_dialog.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
21 |
22 |
26 |
27 |
33 |
34 |
39 |
40 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/res/drawable/batterylevel.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
22 |
25 |
28 |
31 |
34 |
37 |
40 |
43 |
46 |
49 |
52 |
53 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/ptp/commands/RetrieveAddedObjectInfoAction.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.ptp.commands;
17 |
18 | import com.remoteyourcam.usb.ptp.PtpAction;
19 | import com.remoteyourcam.usb.ptp.PtpCamera;
20 | import com.remoteyourcam.usb.ptp.PtpCamera.IO;
21 | import com.remoteyourcam.usb.ptp.PtpConstants.Response;
22 |
23 | public class RetrieveAddedObjectInfoAction implements PtpAction {
24 |
25 | private final PtpCamera camera;
26 | private final int objectHandle;
27 |
28 | public RetrieveAddedObjectInfoAction(PtpCamera camera, int objectHandle) {
29 | this.camera = camera;
30 | this.objectHandle = objectHandle;
31 | }
32 |
33 | @Override
34 | public void exec(IO io) {
35 | GetObjectInfoCommand getInfo = new GetObjectInfoCommand(camera, objectHandle);
36 | io.handleCommand(getInfo);
37 |
38 | if (getInfo.getResponseCode() != Response.Ok) {
39 | return;
40 | }
41 | if (getInfo.getObjectInfo() == null) {
42 | return;
43 | }
44 |
45 | camera.onEventObjectAdded(objectHandle, getInfo.getObjectInfo().objectFormat);
46 | }
47 |
48 | @Override
49 | public void reset() {
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/res/values-large/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
24 |
25 |
28 |
29 |
30 |
31 |
34 |
35 |
38 |
39 |
43 |
44 |
47 |
48 |
--------------------------------------------------------------------------------
/res/layout/drive_lens_pane.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
22 |
23 |
27 |
28 |
32 |
33 |
37 |
38 |
43 |
44 |
49 |
50 |
55 |
56 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/PropertyToggle.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb;
17 |
18 | import android.content.Context;
19 | import android.graphics.Canvas;
20 | import android.graphics.drawable.Drawable;
21 | import android.util.AttributeSet;
22 | import android.widget.ToggleButton;
23 |
24 | public class PropertyToggle extends ToggleButton {
25 |
26 | private Drawable drawable;
27 |
28 | public PropertyToggle(Context context, AttributeSet attrs, int defStyle) {
29 | super(context, attrs, defStyle);
30 | }
31 |
32 | public PropertyToggle(Context context, AttributeSet attrs) {
33 | super(context, attrs);
34 | }
35 |
36 | public PropertyToggle(Context context) {
37 | super(context);
38 | }
39 |
40 | @Override
41 | protected void onDraw(Canvas canvas) {
42 | super.onDraw(canvas);
43 | final Drawable d = drawable;
44 | if (d != null) {
45 | int h = d.getIntrinsicHeight();
46 | int w = d.getIntrinsicWidth();
47 | int y = (getHeight() - h) / 2;
48 | int x = (getWidth() - w) / 2;
49 | d.setBounds(x, y, x + w, y + h);
50 | d.draw(canvas);
51 | }
52 | }
53 |
54 | public void setButtonDrawable2(Drawable d) {
55 | this.drawable = d;
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/ptp/commands/nikon/NikonStopLiveViewAction.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.ptp.commands.nikon;
17 |
18 | import com.remoteyourcam.usb.ptp.NikonCamera;
19 | import com.remoteyourcam.usb.ptp.PtpAction;
20 | import com.remoteyourcam.usb.ptp.PtpCamera.IO;
21 | import com.remoteyourcam.usb.ptp.PtpConstants.Operation;
22 | import com.remoteyourcam.usb.ptp.PtpConstants.Response;
23 | import com.remoteyourcam.usb.ptp.commands.SimpleCommand;
24 |
25 | public class NikonStopLiveViewAction implements PtpAction {
26 |
27 | private final NikonCamera camera;
28 | private final boolean notifyUser;
29 |
30 | public NikonStopLiveViewAction(NikonCamera camera, boolean notifyUser) {
31 | this.camera = camera;
32 | this.notifyUser = notifyUser;
33 | }
34 |
35 | @Override
36 | public void exec(IO io) {
37 | SimpleCommand simpleCmd = new SimpleCommand(camera, Operation.NikonEndLiveView);
38 | io.handleCommand(simpleCmd);
39 |
40 | if (simpleCmd.getResponseCode() == Response.DeviceBusy) {
41 | camera.onDeviceBusy(this, true);
42 | } else {
43 | if (notifyUser) {
44 | camera.onLiveViewStopped();
45 | } else {
46 | camera.onLiveViewStoppedInternal();
47 | }
48 | }
49 | }
50 |
51 | @Override
52 | public void reset() {
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/ptp/commands/RetrieveImageAction.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.ptp.commands;
17 |
18 | import com.remoteyourcam.usb.ptp.Camera.RetrieveImageListener;
19 | import com.remoteyourcam.usb.ptp.PtpAction;
20 | import com.remoteyourcam.usb.ptp.PtpCamera;
21 | import com.remoteyourcam.usb.ptp.PtpCamera.IO;
22 | import com.remoteyourcam.usb.ptp.PtpConstants.Response;
23 |
24 | public class RetrieveImageAction implements PtpAction {
25 |
26 | private final PtpCamera camera;
27 | private final int objectHandle;
28 | private final RetrieveImageListener listener;
29 | private final int sampleSize;
30 |
31 | public RetrieveImageAction(PtpCamera camera, RetrieveImageListener listener, int objectHandle, int sampleSize) {
32 | this.camera = camera;
33 | this.listener = listener;
34 | this.objectHandle = objectHandle;
35 | this.sampleSize = sampleSize;
36 | }
37 |
38 | @Override
39 | public void exec(IO io) {
40 | GetObjectCommand getObject = new GetObjectCommand(camera, objectHandle, sampleSize);
41 | io.handleCommand(getObject);
42 |
43 | if (getObject.getResponseCode() != Response.Ok || getObject.getBitmap() == null) {
44 | listener.onImageRetrieved(0, null);
45 | return;
46 | }
47 |
48 | listener.onImageRetrieved(objectHandle, getObject.getBitmap());
49 | }
50 |
51 | @Override
52 | public void reset() {
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/ptp/commands/nikon/NikonCloseSessionAction.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.ptp.commands.nikon;
17 |
18 | import com.remoteyourcam.usb.ptp.NikonCamera;
19 | import com.remoteyourcam.usb.ptp.PtpAction;
20 | import com.remoteyourcam.usb.ptp.PtpCamera.IO;
21 | import com.remoteyourcam.usb.ptp.PtpConstants.Datatype;
22 | import com.remoteyourcam.usb.ptp.PtpConstants.Property;
23 | import com.remoteyourcam.usb.ptp.PtpConstants.Response;
24 | import com.remoteyourcam.usb.ptp.commands.CloseSessionCommand;
25 | import com.remoteyourcam.usb.ptp.commands.SetDevicePropValueCommand;
26 |
27 | public class NikonCloseSessionAction implements PtpAction {
28 |
29 | private final NikonCamera camera;
30 |
31 | public NikonCloseSessionAction(NikonCamera camera) {
32 | this.camera = camera;
33 | }
34 |
35 | @Override
36 | public void exec(IO io) {
37 | SetDevicePropValueCommand setRecordingMedia = new SetDevicePropValueCommand(camera,
38 | Property.NikonRecordingMedia, 0,
39 | Datatype.uint8);
40 | io.handleCommand(setRecordingMedia);
41 |
42 | if (setRecordingMedia.getResponseCode() == Response.DeviceBusy) {
43 | camera.onDeviceBusy(this, true);
44 | return;
45 | }
46 |
47 | io.handleCommand(new CloseSessionCommand(camera));
48 | camera.onSessionClosed();
49 | }
50 |
51 | @Override
52 | public void reset() {
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/ptp/commands/GetDevicePropDescCommand.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.ptp.commands;
17 |
18 | import java.nio.ByteBuffer;
19 |
20 | import com.remoteyourcam.usb.ptp.PtpCamera;
21 | import com.remoteyourcam.usb.ptp.PtpCamera.IO;
22 | import com.remoteyourcam.usb.ptp.PtpConstants;
23 | import com.remoteyourcam.usb.ptp.model.DevicePropDesc;
24 |
25 | public class GetDevicePropDescCommand extends Command {
26 |
27 | private final int property;
28 | private DevicePropDesc devicePropDesc;
29 |
30 | public GetDevicePropDescCommand(PtpCamera camera, int property) {
31 | super(camera);
32 | this.property = property;
33 | }
34 |
35 | @Override
36 | public void exec(IO io) {
37 | io.handleCommand(this);
38 | if (responseCode == PtpConstants.Response.DeviceBusy) {
39 | camera.onDeviceBusy(this, true);
40 | }
41 | if (devicePropDesc != null) {
42 | // this order is important
43 | camera.onPropertyDescChanged(property, devicePropDesc);
44 | camera.onPropertyChanged(property, devicePropDesc.currentValue);
45 | }
46 | }
47 |
48 | @Override
49 | public void encodeCommand(ByteBuffer b) {
50 | encodeCommand(b, PtpConstants.Operation.GetDevicePropDesc, property);
51 | }
52 |
53 | @Override
54 | protected void decodeData(ByteBuffer b, int length) {
55 | devicePropDesc = new DevicePropDesc(b, length);
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/view/WebViewDialogFragment.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.view;
17 |
18 | import android.app.DialogFragment;
19 | import android.os.Bundle;
20 | import android.view.LayoutInflater;
21 | import android.view.View;
22 | import android.view.View.OnClickListener;
23 | import android.view.ViewGroup;
24 | import android.webkit.WebView;
25 |
26 | import com.remoteyourcam.usb.R;
27 |
28 | public class WebViewDialogFragment extends DialogFragment {
29 |
30 | public static WebViewDialogFragment newInstance(int title, String url) {
31 | Bundle args = new Bundle();
32 | args.putInt("title", title);
33 | args.putString("url", url);
34 | WebViewDialogFragment f = new WebViewDialogFragment();
35 | f.setArguments(args);
36 | return f;
37 | }
38 |
39 | @Override
40 | public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
41 | getDialog().setTitle(getArguments().getInt("title"));
42 | View view = inflater.inflate(R.layout.webview_dialog, container, false);
43 | WebView webview = (WebView) view.findViewById(R.id.webview1);
44 | webview.loadUrl(getArguments().getString("url"));
45 | view.findViewById(android.R.id.button1).setOnClickListener(new OnClickListener() {
46 | @Override
47 | public void onClick(View v) {
48 | dismiss();
49 | }
50 | });
51 | return view;
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/ptp/WorkerNotifier.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.ptp;
17 |
18 | import android.app.Notification;
19 | import android.app.NotificationManager;
20 | import android.content.Context;
21 |
22 | import com.remoteyourcam.usb.R;
23 | import com.remoteyourcam.usb.util.NotificationIds;
24 |
25 | public class WorkerNotifier implements Camera.WorkerListener {
26 |
27 | private final NotificationManager notificationManager;
28 | private final Notification notification;
29 | private final int uniqueId;
30 |
31 | public WorkerNotifier(Context context) {
32 | notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
33 | notification = new Notification(R.drawable.icon, context.getString(R.string.worker_ticker),
34 | System.currentTimeMillis());
35 | notification
36 | .setLatestEventInfo(context.getApplicationContext(), context.getString(R.string.worker_content_title),
37 | context.getString(R.string.worker_content_text), null);
38 | uniqueId = NotificationIds.getInstance().getUniqueIdentifier(WorkerNotifier.class.getName() + ":running");
39 | }
40 |
41 | @Override
42 | public void onWorkerStarted() {
43 | notification.flags |= Notification.FLAG_NO_CLEAR;
44 | notificationManager.notify(uniqueId, notification);
45 | }
46 |
47 | @Override
48 | public void onWorkerEnded() {
49 | notificationManager.cancel(uniqueId);
50 | }
51 |
52 | }
53 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/ptp/commands/GetDeviceInfoCommand.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.ptp.commands;
17 |
18 | import java.nio.ByteBuffer;
19 |
20 | import com.remoteyourcam.usb.ptp.PtpCamera;
21 | import com.remoteyourcam.usb.ptp.PtpConstants;
22 | import com.remoteyourcam.usb.ptp.PtpCamera.IO;
23 | import com.remoteyourcam.usb.ptp.PtpConstants.Operation;
24 | import com.remoteyourcam.usb.ptp.PtpConstants.Response;
25 | import com.remoteyourcam.usb.ptp.model.DeviceInfo;
26 |
27 | public class GetDeviceInfoCommand extends Command {
28 |
29 | private DeviceInfo info;
30 |
31 | public GetDeviceInfoCommand(PtpCamera camera) {
32 | super(camera);
33 | }
34 |
35 | @Override
36 | public void exec(IO io) {
37 | io.handleCommand(this);
38 | if (responseCode != Response.Ok) {
39 | camera.onPtpError(String.format("Couldn't read device information, error code \"%s\"",
40 | PtpConstants.responseToString(responseCode)));
41 | } else if (info == null) {
42 | camera.onPtpError("Couldn't retrieve device information");
43 | }
44 | }
45 |
46 | @Override
47 | public void reset() {
48 | super.reset();
49 | info = null;
50 | }
51 |
52 | @Override
53 | public void encodeCommand(ByteBuffer b) {
54 | encodeCommand(b, Operation.GetDeviceInfo);
55 | }
56 |
57 | @Override
58 | protected void decodeData(ByteBuffer b, int length) {
59 | info = new DeviceInfo(b, length);
60 | camera.setDeviceInfo(info);
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/res/values/arrays.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 | Never
21 | Manual
22 | 2 seconds
23 | 4 seconds
24 | 6 seconds
25 | 8 seconds
26 | 10 seconds
27 | 15 seconds
28 | 20 seconds
29 |
30 |
31 | -2
32 | -1
33 | 2
34 | 4
35 | 6
36 | 8
37 | 10
38 | 15
39 | 20
40 |
41 |
42 | Disable
43 | 2
44 | 4
45 | 6
46 | 8
47 | 10
48 | 15
49 | 20
50 |
51 |
52 | 0
53 | 2
54 | 4
55 | 6
56 | 8
57 | 10
58 | 15
59 | 20
60 |
61 |
62 | Full
63 | 1/2
64 | 1/4
65 |
66 |
67 | 1
68 | 2
69 | 4
70 |
71 |
72 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/ptp/commands/CloseSessionCommand.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.ptp.commands;
17 |
18 | import java.nio.ByteBuffer;
19 |
20 | import com.remoteyourcam.usb.AppConfig;
21 | import com.remoteyourcam.usb.ptp.PtpCamera;
22 | import com.remoteyourcam.usb.ptp.PtpConstants;
23 | import com.remoteyourcam.usb.ptp.PtpCamera.IO;
24 | import com.remoteyourcam.usb.ptp.PtpConstants.Operation;
25 | import com.remoteyourcam.usb.ptp.PtpConstants.Response;
26 |
27 | import android.util.Log;
28 |
29 | public class CloseSessionCommand extends Command {
30 |
31 | private final String TAG = CloseSessionCommand.class.getSimpleName();
32 |
33 | public CloseSessionCommand(PtpCamera camera) {
34 | super(camera);
35 | }
36 |
37 | @Override
38 | public void exec(IO io) {
39 | io.handleCommand(this);
40 | // Can this even happen?
41 | if (responseCode == Response.DeviceBusy) {
42 | camera.onDeviceBusy(this, true);
43 | return;
44 | }
45 | // close even when error happened
46 | camera.onSessionClosed();
47 | if (responseCode != Response.Ok) {
48 | // TODO error report
49 | if (AppConfig.LOG) {
50 | Log.w(TAG,
51 | String.format("Error response when closing session, response %s",
52 | PtpConstants.responseToString(responseCode)));
53 | }
54 | }
55 | }
56 |
57 | @Override
58 | public void encodeCommand(ByteBuffer b) {
59 | encodeCommand(b, Operation.CloseSession);
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/view/AspectRatioImageView.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.view;
17 |
18 | import android.content.Context;
19 | import android.util.AttributeSet;
20 | import android.widget.ImageView;
21 |
22 | public class AspectRatioImageView extends ImageView {
23 |
24 | private int thumbWidth;
25 | private int thumbHeight;
26 |
27 | public AspectRatioImageView(Context context) {
28 | super(context);
29 | }
30 |
31 | public AspectRatioImageView(Context context, AttributeSet attrs) {
32 | super(context, attrs);
33 | }
34 |
35 | public AspectRatioImageView(Context context, AttributeSet attrs, int defStyle) {
36 | super(context, attrs, defStyle);
37 | }
38 |
39 | @Override
40 | protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
41 | int width = MeasureSpec.getSize(widthMeasureSpec);
42 | if (getDrawable() == null || getDrawable().getIntrinsicWidth() == 0) {
43 | if (thumbWidth != 0) {
44 | int height = width * thumbHeight / thumbWidth;
45 | setMeasuredDimension(width, height);
46 | } else {
47 | setMeasuredDimension(width, width);
48 | }
49 | } else {
50 | int height = width * getDrawable().getIntrinsicHeight() / getDrawable().getIntrinsicWidth();
51 | setMeasuredDimension(width, height);
52 | }
53 | }
54 |
55 | public void setExpectedDimensions(int thumbWidth, int thumbHeight) {
56 | this.thumbWidth = thumbWidth;
57 | this.thumbHeight = thumbHeight;
58 | }
59 | }
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/ptp/commands/eos/EosSetPropertyCommand.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.ptp.commands.eos;
17 |
18 | import java.nio.ByteBuffer;
19 |
20 | import com.remoteyourcam.usb.ptp.EosCamera;
21 | import com.remoteyourcam.usb.ptp.PtpCamera.IO;
22 | import com.remoteyourcam.usb.ptp.PtpConstants.Operation;
23 | import com.remoteyourcam.usb.ptp.PtpConstants.Response;
24 | import com.remoteyourcam.usb.ptp.PtpConstants.Type;
25 |
26 | public class EosSetPropertyCommand extends EosCommand {
27 |
28 | private final int property;
29 | private final int value;
30 |
31 | public EosSetPropertyCommand(EosCamera camera, int property, int value) {
32 | super(camera);
33 | hasDataToSend = true;
34 | this.property = property;
35 | this.value = value;
36 | }
37 |
38 | @Override
39 | public void exec(IO io) {
40 | io.handleCommand(this);
41 | if (responseCode == Response.DeviceBusy) {
42 | camera.onDeviceBusy(this, true);
43 | return;
44 | }
45 | }
46 |
47 | @Override
48 | public void encodeCommand(ByteBuffer b) {
49 | encodeCommand(b, Operation.EosSetDevicePropValue);
50 | }
51 |
52 | @Override
53 | public void encodeData(ByteBuffer b) {
54 | // header
55 | b.putInt(24);
56 | b.putShort((short) Type.Data);
57 | b.putShort((short) Operation.EosSetDevicePropValue);
58 | b.putInt(camera.currentTransactionId());
59 | // specific block
60 | b.putInt(0x0C);
61 | b.putInt(property);
62 | b.putInt(value);
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/ptp/commands/SimpleCommand.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.ptp.commands;
17 |
18 | import java.nio.ByteBuffer;
19 |
20 | import com.remoteyourcam.usb.ptp.PtpCamera;
21 | import com.remoteyourcam.usb.ptp.PtpCamera.IO;
22 | import com.remoteyourcam.usb.ptp.PtpConstants.Response;
23 |
24 | public class SimpleCommand extends Command {
25 |
26 | private final int operation;
27 | private int numParams;
28 | private int p0;
29 | private int p1;
30 |
31 | public SimpleCommand(PtpCamera camera, int operation) {
32 | super(camera);
33 | this.operation = operation;
34 | }
35 |
36 | public SimpleCommand(PtpCamera camera, int operation, int p0) {
37 | super(camera);
38 | this.operation = operation;
39 | this.p0 = p0;
40 | this.numParams = 1;
41 | }
42 |
43 | public SimpleCommand(PtpCamera camera, int operation, int p0, int p1) {
44 | super(camera);
45 | this.operation = operation;
46 | this.p0 = p0;
47 | this.p1 = p1;
48 | this.numParams = 2;
49 | }
50 |
51 | @Override
52 | public void exec(IO io) {
53 | io.handleCommand(this);
54 | if (responseCode == Response.DeviceBusy) {
55 | camera.onDeviceBusy(this, true);
56 | return;
57 | }
58 | }
59 |
60 | @Override
61 | public void encodeCommand(ByteBuffer b) {
62 | if (numParams == 2) {
63 | encodeCommand(b, operation, p0, p1);
64 | } else if (numParams == 1) {
65 | encodeCommand(b, operation, p0);
66 | } else {
67 | encodeCommand(b, operation);
68 | }
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/ptp/commands/GetThumb.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.ptp.commands;
17 |
18 | import java.nio.ByteBuffer;
19 |
20 | import android.graphics.Bitmap;
21 | import android.graphics.BitmapFactory;
22 | import android.util.Log;
23 |
24 | import com.remoteyourcam.usb.ptp.PtpCamera;
25 | import com.remoteyourcam.usb.ptp.PtpCamera.IO;
26 | import com.remoteyourcam.usb.ptp.PtpConstants;
27 |
28 | public class GetThumb extends Command {
29 |
30 | private static final String TAG = GetThumb.class.getSimpleName();
31 |
32 | private final int objectHandle;
33 | private Bitmap inBitmap;
34 |
35 | public GetThumb(PtpCamera camera, int objectHandle) {
36 | super(camera);
37 | this.objectHandle = objectHandle;
38 | }
39 |
40 | public Bitmap getBitmap() {
41 | return inBitmap;
42 | }
43 |
44 | @Override
45 | public void exec(IO io) {
46 | throw new UnsupportedOperationException();
47 | }
48 |
49 | @Override
50 | public void reset() {
51 | super.reset();
52 | inBitmap = null;
53 | }
54 |
55 | @Override
56 | public void encodeCommand(ByteBuffer b) {
57 | encodeCommand(b, PtpConstants.Operation.GetThumb, objectHandle);
58 | }
59 |
60 | @Override
61 | protected void decodeData(ByteBuffer b, int length) {
62 | try {
63 | // 12 == offset of data header
64 | inBitmap = BitmapFactory.decodeByteArray(b.array(), 12, length - 12);
65 | } catch (RuntimeException e) {
66 | Log.i(TAG, "exception on decoding picture : " + e.toString());
67 | } catch (OutOfMemoryError e) {
68 | System.gc();
69 | }
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/proguard.cfg:
--------------------------------------------------------------------------------
1 | -optimizationpasses 5
2 | -dontusemixedcaseclassnames
3 | -dontskipnonpubliclibraryclasses
4 | -dontpreverify
5 | -verbose
6 | -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
7 |
8 | -keep public class * extends android.app.Fragment
9 | -keep public class * extends android.app.Activity
10 | -keep public class * extends android.app.Application
11 | -keep public class * extends android.app.Service
12 | -keep public class * extends android.content.BroadcastReceiver
13 | -keep public class * extends android.content.ContentProvider
14 | -keep public class * extends android.app.backup.BackupAgentHelper
15 | -keep public class * extends android.preference.Preference
16 | -keep public class com.android.vending.licensing.ILicensingService
17 |
18 | -keepclasseswithmembernames class * {
19 | native ;
20 | }
21 |
22 | -keepclasseswithmembers class * {
23 | public (android.content.Context, android.util.AttributeSet);
24 | }
25 |
26 | -keepclasseswithmembers class * {
27 | public (android.content.Context, android.util.AttributeSet, int);
28 | }
29 |
30 | -keepclassmembers class * extends android.app.Activity {
31 | public void *(android.view.View);
32 | public void *(android.view.MenuItem);
33 | }
34 |
35 | -keepclassmembers enum * {
36 | public static **[] values();
37 | public static ** valueOf(java.lang.String);
38 | }
39 |
40 | -keep class * implements android.os.Parcelable {
41 | public static final android.os.Parcelable$Creator *;
42 | }
43 |
44 | -renamesourcefileattribute SourceFile
45 | -keepattributes SourceFile,LineNumberTable
46 |
47 | # ACRA needs "annotations" so add this...
48 | -keepattributes *Annotation*
49 |
50 | # keep this class so that logging will show 'ACRA' and not a obfuscated name like 'a'.
51 | # Note: if you are removing log messages elsewhere in this file then this isn't necessary
52 | -keep class org.acra.ACRA {
53 | *;
54 | }
55 |
56 | # keep this around for some enums that ACRA needs
57 | -keep class org.acra.ReportingInteractionMode {
58 | *;
59 | }
60 |
61 | # keep this otherwise it is removed by ProGuard
62 | -keep public class org.acra.ErrorReporter
63 | {
64 | public void addCustomData(java.lang.String,java.lang.String);
65 | }
66 |
67 | # keep this otherwise it is removed by ProGuard
68 | -keep public class org.acra.ErrorReporter
69 | {
70 | public org.acra.ErrorReporter$ReportsSenderWorker handleSilentException(java.lang.Throwable);
71 | }
--------------------------------------------------------------------------------
/res/layout/gallery_frag.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
21 |
22 |
26 |
27 |
32 |
33 |
38 |
39 |
40 |
43 |
44 |
54 |
55 |
56 |
63 |
64 |
65 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/view/StorageAdapter.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.view;
17 |
18 | import java.util.ArrayList;
19 | import java.util.List;
20 |
21 | import android.content.Context;
22 | import android.view.LayoutInflater;
23 | import android.view.View;
24 | import android.view.ViewGroup;
25 | import android.widget.BaseAdapter;
26 | import android.widget.TextView;
27 |
28 | public class StorageAdapter extends BaseAdapter {
29 |
30 | private final List ids = new ArrayList();
31 | private final List labels = new ArrayList();
32 | private final LayoutInflater inflater;
33 |
34 | public StorageAdapter(Context context) {
35 | inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
36 | }
37 |
38 | public void add(int handle, String label) {
39 | ids.add(handle);
40 | labels.add(label);
41 | notifyDataSetChanged();
42 | }
43 |
44 | @Override
45 | public int getCount() {
46 | return ids.size();
47 | }
48 |
49 | @Override
50 | public String getItem(int position) {
51 | return labels.get(position);
52 | }
53 |
54 | public int getItemHandle(int position) {
55 | return ids.get(position);
56 | }
57 |
58 | @Override
59 | public long getItemId(int position) {
60 | return position;
61 | }
62 |
63 | @Override
64 | public View getView(int position, View convertView, ViewGroup parent) {
65 | TextView view = (TextView) convertView;
66 |
67 | if (view == null) {
68 | view = (TextView) inflater.inflate(android.R.layout.simple_list_item_1, parent, false);
69 | }
70 |
71 | view.setText(labels.get(position));
72 |
73 | return view;
74 | }
75 | }
76 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/ptp/commands/nikon/NikonStartLiveViewAction.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.ptp.commands.nikon;
17 |
18 | import com.remoteyourcam.usb.ptp.NikonCamera;
19 | import com.remoteyourcam.usb.ptp.PtpAction;
20 | import com.remoteyourcam.usb.ptp.PtpCamera.IO;
21 | import com.remoteyourcam.usb.ptp.PtpConstants.Operation;
22 | import com.remoteyourcam.usb.ptp.PtpConstants.Response;
23 | import com.remoteyourcam.usb.ptp.commands.SimpleCommand;
24 |
25 | public class NikonStartLiveViewAction implements PtpAction {
26 |
27 | private final NikonCamera camera;
28 |
29 | public NikonStartLiveViewAction(NikonCamera camera) {
30 | this.camera = camera;
31 | }
32 |
33 | @Override
34 | public void exec(IO io) {
35 | SimpleCommand simpleCmd = new SimpleCommand(camera, Operation.NikonStartLiveView);
36 | io.handleCommand(simpleCmd);
37 |
38 | if (simpleCmd.getResponseCode() != Response.Ok) {
39 | return;
40 | }
41 |
42 | SimpleCommand deviceReady = new SimpleCommand(camera, Operation.NikonDeviceReady);
43 | for (int i = 0; i < 10; ++i) {
44 | try {
45 | Thread.sleep(300);
46 | } catch (InterruptedException e) {
47 | // nop
48 | }
49 |
50 | deviceReady.reset();
51 | io.handleCommand(deviceReady);
52 | if (deviceReady.getResponseCode() == Response.DeviceBusy) {
53 | // still waiting
54 | } else if (deviceReady.getResponseCode() == Response.Ok) {
55 | camera.onLiveViewStarted();
56 | return;
57 | } else {
58 | return;
59 | }
60 | }
61 | }
62 |
63 | @Override
64 | public void reset() {
65 | }
66 | }
67 |
--------------------------------------------------------------------------------
/res/layout/about_dialog.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
22 |
23 |
26 |
27 |
32 |
33 |
41 |
42 |
48 |
49 |
50 |
56 |
57 |
63 |
64 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/ptp/commands/GetObjectInfoCommand.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.ptp.commands;
17 |
18 | import java.nio.ByteBuffer;
19 |
20 | import com.remoteyourcam.usb.AppConfig;
21 | import com.remoteyourcam.usb.ptp.PtpCamera;
22 | import com.remoteyourcam.usb.ptp.PtpConstants;
23 | import com.remoteyourcam.usb.ptp.PtpCamera.IO;
24 | import com.remoteyourcam.usb.ptp.PtpConstants.Response;
25 | import com.remoteyourcam.usb.ptp.model.ObjectInfo;
26 |
27 | import android.util.Log;
28 |
29 | public class GetObjectInfoCommand extends Command {
30 |
31 | private final String TAG = GetObjectInfoCommand.class.getSimpleName();
32 |
33 | private final int outObjectHandle;
34 | private ObjectInfo inObjectInfo;
35 |
36 | public GetObjectInfoCommand(PtpCamera camera, int objectHandle) {
37 | super(camera);
38 | this.outObjectHandle = objectHandle;
39 | }
40 |
41 | public ObjectInfo getObjectInfo() {
42 | return inObjectInfo;
43 | }
44 |
45 | @Override
46 | public void exec(IO io) {
47 | io.handleCommand(this);
48 | if (responseCode == Response.DeviceBusy) {
49 | camera.onDeviceBusy(this, true);
50 | }
51 | if (inObjectInfo != null) {
52 | if (AppConfig.LOG) {
53 | Log.i(TAG, inObjectInfo.toString());
54 | }
55 | }
56 | }
57 |
58 | @Override
59 | public void reset() {
60 | super.reset();
61 | inObjectInfo = null;
62 | }
63 |
64 | @Override
65 | public void encodeCommand(ByteBuffer b) {
66 | encodeCommand(b, PtpConstants.Operation.GetObjectInfo, outObjectHandle);
67 | }
68 |
69 | @Override
70 | protected void decodeData(ByteBuffer b, int length) {
71 | inObjectInfo = new ObjectInfo(b, length);
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/ptp/commands/GetDevicePropValueCommand.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.ptp.commands;
17 |
18 | import java.nio.ByteBuffer;
19 |
20 | import com.remoteyourcam.usb.ptp.PtpCamera;
21 | import com.remoteyourcam.usb.ptp.PtpCamera.IO;
22 | import com.remoteyourcam.usb.ptp.PtpConstants;
23 | import com.remoteyourcam.usb.ptp.PtpConstants.Datatype;
24 | import com.remoteyourcam.usb.ptp.PtpConstants.Response;
25 |
26 | public class GetDevicePropValueCommand extends Command {
27 |
28 | private final int property;
29 | private final int datatype;
30 | private int value;
31 |
32 | public GetDevicePropValueCommand(PtpCamera camera, int property, int datatype) {
33 | super(camera);
34 | this.property = property;
35 | this.datatype = datatype;
36 | }
37 |
38 | @Override
39 | public void exec(IO io) {
40 | io.handleCommand(this);
41 | if (responseCode == Response.DeviceBusy) {
42 | camera.onDeviceBusy(this, true);
43 | }
44 | if (responseCode == Response.Ok) {
45 | camera.onPropertyChanged(property, value);
46 | }
47 | }
48 |
49 | @Override
50 | public void encodeCommand(ByteBuffer b) {
51 | encodeCommand(b, PtpConstants.Operation.GetDevicePropValue, property);
52 | }
53 |
54 | @Override
55 | protected void decodeData(ByteBuffer b, int length) {
56 | if (datatype == Datatype.int8) {
57 | value = b.get();
58 | } else if (datatype == Datatype.uint8) {
59 | value = b.get() & 0xFF;
60 | } else if (datatype == Datatype.uint16) {
61 | value = b.getShort() & 0xFFFF;
62 | } else if (datatype == Datatype.int16) {
63 | value = b.getShort();
64 | } else if (datatype == Datatype.int32 || datatype == Datatype.uint32) {
65 | value = b.getInt();
66 | }
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/ptp/PtpUsbConnection.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.ptp;
17 |
18 | import android.hardware.usb.UsbDeviceConnection;
19 | import android.hardware.usb.UsbEndpoint;
20 | import android.hardware.usb.UsbRequest;
21 |
22 | public class PtpUsbConnection {
23 |
24 | private final UsbDeviceConnection connection;
25 | private final UsbEndpoint bulkOut;
26 | private final UsbEndpoint bulkIn;
27 | private final int vendorId;
28 | private final int productId;
29 |
30 | public PtpUsbConnection(UsbDeviceConnection connection, UsbEndpoint bulkIn, UsbEndpoint bulkOut, int vendorId,
31 | int productId) {
32 | this.connection = connection;
33 | this.bulkIn = bulkIn;
34 | this.bulkOut = bulkOut;
35 | this.vendorId = vendorId;
36 | this.productId = productId;
37 | }
38 |
39 | public int getVendorId() {
40 | return vendorId;
41 | }
42 |
43 | public int getProductId() {
44 | return productId;
45 | }
46 |
47 | public void close() {
48 | connection.close();
49 | }
50 |
51 | public int getMaxPacketInSize() {
52 | return bulkIn.getMaxPacketSize();
53 | }
54 |
55 | public int getMaxPacketOutSize() {
56 | return bulkOut.getMaxPacketSize();
57 | }
58 |
59 | public UsbRequest createInRequest() {
60 | UsbRequest r = new UsbRequest();
61 | r.initialize(connection, bulkIn);
62 | return r;
63 | }
64 |
65 | public int bulkTransferOut(byte[] buffer, int length, int timeout) {
66 | return connection.bulkTransfer(bulkOut, buffer, length, timeout);
67 | }
68 |
69 | public int bulkTransferIn(byte[] buffer, int maxLength, int timeout) {
70 | return connection.bulkTransfer(bulkIn, buffer, maxLength, timeout);
71 | }
72 |
73 | public void requestWait() {
74 | connection.requestWait();
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/res/xml/app_settings_preferences.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
27 |
28 |
29 |
36 |
37 |
42 |
43 |
44 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/ptp/commands/GetStorageInfosAction.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.ptp.commands;
17 |
18 | import com.remoteyourcam.usb.ptp.Camera;
19 | import com.remoteyourcam.usb.ptp.Camera.StorageInfoListener;
20 | import com.remoteyourcam.usb.ptp.PtpAction;
21 | import com.remoteyourcam.usb.ptp.PtpCamera;
22 | import com.remoteyourcam.usb.ptp.PtpCamera.IO;
23 | import com.remoteyourcam.usb.ptp.PtpConstants.Response;
24 |
25 | public class GetStorageInfosAction implements PtpAction {
26 |
27 | private final PtpCamera camera;
28 | private final StorageInfoListener listener;
29 |
30 | public GetStorageInfosAction(PtpCamera camera, Camera.StorageInfoListener listener) {
31 | this.camera = camera;
32 | this.listener = listener;
33 | }
34 |
35 | @Override
36 | public void exec(IO io) {
37 | GetStorageIdsCommand getStorageIds = new GetStorageIdsCommand(camera);
38 | io.handleCommand(getStorageIds);
39 |
40 | if (getStorageIds.getResponseCode() != Response.Ok) {
41 | listener.onAllStoragesFound();
42 | return;
43 | }
44 |
45 | int ids[] = getStorageIds.getStorageIds();
46 | for (int i = 0; i < ids.length; ++i) {
47 | int storageId = ids[i];
48 | GetStorageInfoCommand c = new GetStorageInfoCommand(camera, storageId);
49 | io.handleCommand(c);
50 |
51 | if (c.getResponseCode() != Response.Ok) {
52 | listener.onAllStoragesFound();
53 | return;
54 | }
55 |
56 | String label = c.getStorageInfo().volumeLabel.isEmpty() ? c.getStorageInfo().storageDescription : c
57 | .getStorageInfo().volumeLabel;
58 | if (label == null || label.isEmpty()) {
59 | label = "Storage " + i;
60 | }
61 | listener.onStorageFound(storageId, label);
62 | }
63 |
64 | listener.onAllStoragesFound();
65 | }
66 |
67 | @Override
68 | public void reset() {
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/ptp/commands/nikon/NikonGetLiveViewImageAction.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.ptp.commands.nikon;
17 |
18 | import com.remoteyourcam.usb.ptp.NikonCamera;
19 | import com.remoteyourcam.usb.ptp.PtpAction;
20 | import com.remoteyourcam.usb.ptp.PtpCamera.IO;
21 | import com.remoteyourcam.usb.ptp.PtpConstants.Operation;
22 | import com.remoteyourcam.usb.ptp.PtpConstants.Response;
23 | import com.remoteyourcam.usb.ptp.commands.SimpleCommand;
24 | import com.remoteyourcam.usb.ptp.model.LiveViewData;
25 |
26 | public class NikonGetLiveViewImageAction implements PtpAction {
27 |
28 | private final NikonCamera camera;
29 | private final LiveViewData reuse;
30 |
31 | public NikonGetLiveViewImageAction(NikonCamera camera, LiveViewData reuse) {
32 | this.camera = camera;
33 | this.reuse = reuse;
34 | }
35 |
36 | @Override
37 | public void exec(IO io) {
38 | SimpleCommand simpleCmd = new SimpleCommand(camera, Operation.NikonStartLiveView);
39 | io.handleCommand(simpleCmd);
40 |
41 | if (simpleCmd.getResponseCode() != Response.Ok) {
42 | return;
43 | }
44 |
45 | SimpleCommand deviceReady = new SimpleCommand(camera, Operation.NikonDeviceReady);
46 | for (int i = 0; i < 10; ++i) {
47 | try {
48 | Thread.sleep(300);
49 | } catch (InterruptedException e) {
50 | // nop
51 | }
52 |
53 | deviceReady.reset();
54 | io.handleCommand(deviceReady);
55 | if (deviceReady.getResponseCode() == Response.DeviceBusy) {
56 | // still waiting
57 | } else if (deviceReady.getResponseCode() == Response.Ok) {
58 | camera.onLiveViewRestarted();
59 | io.handleCommand(new NikonGetLiveViewImageCommand(camera, reuse));
60 | return;
61 | } else {
62 | return;
63 | }
64 | }
65 | }
66 |
67 | @Override
68 | public void reset() {
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/ptp/commands/nikon/NikonEventCheckCommand.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.ptp.commands.nikon;
17 |
18 | import java.nio.ByteBuffer;
19 |
20 | import android.util.Log;
21 |
22 | import com.remoteyourcam.usb.AppConfig;
23 | import com.remoteyourcam.usb.ptp.NikonCamera;
24 | import com.remoteyourcam.usb.ptp.PtpCamera.IO;
25 | import com.remoteyourcam.usb.ptp.PtpConstants;
26 | import com.remoteyourcam.usb.ptp.PtpConstants.Event;
27 | import com.remoteyourcam.usb.ptp.PtpConstants.Operation;
28 |
29 | public class NikonEventCheckCommand extends NikonCommand {
30 |
31 | private static final String TAG = NikonEventCheckCommand.class.getSimpleName();
32 |
33 | public NikonEventCheckCommand(NikonCamera camera) {
34 | super(camera);
35 | }
36 |
37 | @Override
38 | public void exec(IO io) {
39 | io.handleCommand(this);
40 | }
41 |
42 | @Override
43 | public void encodeCommand(ByteBuffer b) {
44 | encodeCommand(b, Operation.NikonGetEvent);
45 | }
46 |
47 | @Override
48 | protected void decodeData(ByteBuffer b, int length) {
49 | int count = b.getShort();
50 |
51 | while (count > 0) {
52 | --count;
53 |
54 | int eventCode = b.getShort();
55 | int eventParam = b.getInt();
56 |
57 | if (AppConfig.LOG) {
58 | Log.i(TAG,
59 | String.format("event %s value %s(%04x)", PtpConstants.eventToString(eventCode),
60 | PtpConstants.propertyToString(eventParam), eventParam));
61 | }
62 |
63 | switch (eventCode) {
64 | case Event.ObjectAdded:
65 | camera.onEventObjectAdded(eventParam);
66 | break;
67 | case Event.DevicePropChanged:
68 | camera.onEventDevicePropChanged(eventParam);
69 | break;
70 | case Event.CaptureComplete:
71 | camera.onEventCaptureComplete();
72 | break;
73 | }
74 | }
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/src/com/remoteyourcam/usb/ptp/commands/RetrieveImageInfoAction.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2013 Nils Assbeck, Guersel Ayaz and Michael Zoech
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.remoteyourcam.usb.ptp.commands;
17 |
18 | import android.graphics.Bitmap;
19 |
20 | import com.remoteyourcam.usb.ptp.Camera.RetrieveImageInfoListener;
21 | import com.remoteyourcam.usb.ptp.PtpAction;
22 | import com.remoteyourcam.usb.ptp.PtpCamera;
23 | import com.remoteyourcam.usb.ptp.PtpCamera.IO;
24 | import com.remoteyourcam.usb.ptp.PtpConstants;
25 | import com.remoteyourcam.usb.ptp.PtpConstants.Response;
26 | import com.remoteyourcam.usb.ptp.model.ObjectInfo;
27 |
28 | public class RetrieveImageInfoAction implements PtpAction {
29 |
30 | private final PtpCamera camera;
31 | private final int objectHandle;
32 | private final RetrieveImageInfoListener listener;
33 |
34 | public RetrieveImageInfoAction(PtpCamera camera, RetrieveImageInfoListener listener, int objectHandle) {
35 | this.camera = camera;
36 | this.listener = listener;
37 | this.objectHandle = objectHandle;
38 | }
39 |
40 | @Override
41 | public void exec(IO io) {
42 | GetObjectInfoCommand getInfo = new GetObjectInfoCommand(camera, objectHandle);
43 | io.handleCommand(getInfo);
44 |
45 | if (getInfo.getResponseCode() != Response.Ok) {
46 | return;
47 | }
48 |
49 | ObjectInfo objectInfo = getInfo.getObjectInfo();
50 | if (objectInfo == null) {
51 | return;
52 | }
53 |
54 | Bitmap thumbnail = null;
55 | if (objectInfo.thumbFormat == PtpConstants.ObjectFormat.JFIF
56 | || objectInfo.thumbFormat == PtpConstants.ObjectFormat.EXIF_JPEG) {
57 | GetThumb getThumb = new GetThumb(camera, objectHandle);
58 | io.handleCommand(getThumb);
59 | if (getThumb.getResponseCode() == Response.Ok) {
60 | thumbnail = getThumb.getBitmap();
61 | }
62 | }
63 |
64 | listener.onImageInfoRetrieved(objectHandle, getInfo.getObjectInfo(), thumbnail);
65 | }
66 |
67 | @Override
68 | public void reset() {
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/assets/changelog/changelog.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Changelog
7 |
8 |
9 |
24 |
Version 0.3.0 (2012-03-13)
25 |
New Features
26 |
27 |
Gallery with fullscreen picture review, zooming and panning
28 |
Picture stream showing captured pictures
29 |
New setting "Exposure Compensation"
30 |
The duration a captured picture is shown during Live View is now adjustable
31 |
32 |
Improvements
33 |
34 |
Zooming and panning in Live View and picture review
35 |
Leaving the app via the Home button does not stop the session.
36 | A notification icon has been added to show you when the app is still running in the background.
37 |
38 |
39 |
Version 0.2.4 (2012-02-02)
40 |
Improvements
41 |
42 |
Live View for Nikon D700
43 |
44 |
45 |
Version 0.2.3
46 |
New Features
47 |
48 |
Support for Android phones and smaller tablets such as the Galaxy Nexus and the Samsung Galaxy Tab 8.9