Я смог заставить свою камеру a-7 делать снимки с помощью API. Однако я застрял, пытаясь передать эти изображения. Следуя документации, я вызвал setCameraFunction, чтобы изменить его на режим передачи содержимого, используя json ниже:
{"method":"setCameraFunction","params":["Contents Transfer"],"id":1,"version":"1.0"}
Однако камера всегда возвращается с:
{"id":1,"error":[1,"Not Available Now"]}
Ниже приведен вывод последовательности, которую я использую для получения изображения (5-секундная пауза между каждым вызовом):
Request: {"method":"startRecMode","params":[],"id":1,"version":"1.0"}
Response: {"result":[0],"id":1}
Request: {"method":"getAvailableShootMode","params":[],"id":1,"version":"1.0"}
Response: {"result":["still",["still"]],"id":1}
Request: {"method":"actTakePicture","params":[],"id":1,"version":"1.0"}
Response: {"result":[["http:\/\/192.168.122.1:8080\/postview\/pict20170707_003048_0.JPG"]],"id":1}
Request: {"method":"stopRecMode","params":[],"id":1,"version":"1.0"}
Response: {"result":[0],"id":1}
Request: {"method":"getStorageInformation","params":[],"id":1,"version":"1.0"}
Response: {"id":1,"error":[1,"Not Available Now"]}
Request: {"method":"setCameraFunction","params":["Contents Transfer"],"id":1,"version":"1.0"}
Response: {"id":1,"error":[1,"Not Available Now"]}
Иногда getStorageInformation возвращается с:
{
"result": [
[
{
"storageDescription": "Storage Media",
"numberOfRecordableImages": 3275,
"storageID": "Memory Card 1",
"recordTarget": true,
"recordableTime": -1
}
]
],
"id": 1
}
Однако при попытке перейти в режим содержимого всегда появляется сообщение «Сейчас недоступно».
Я смог получить доступ к изображению предварительного просмотра, используя URL-адрес, сгенерированный функцией actTakePicture, однако это изображение с низким разрешением, и оно не будет работать для нашего приложения.
Я также пытался не вызывать функцию «stopRecMode» перед попыткой войти в режим «Передача содержимого», но это не имело значения.
Вывод функции "getEvent" перед попыткой входа в режим Content Transfer:
{
"result": [
{
"type": "availableApiList",
"names": [
"getVersions",
"getMethodTypes",
"getApplicationInfo",
"getAvailableApiList",
"getEvent",
"startRecMode",
"stopRecMode"
]
},
{
"cameraStatus": "NotReady",
"type": "cameraStatus"
},
null,
{
"type": "liveviewStatus",
"liveviewStatus": false
},
null,
[],
[],
null,
null,
null,
[],
null,
{
"cameraFunctionCandidates": [
"Contents Transfer",
"Remote Shooting"
],
"type": "cameraFunction",
"currentCameraFunction": "Remote Shooting"
},
null,
null,
null,
null,
null,
null,
{
"postviewImageSizeCandidates": [
"2M"
],
"type": "postviewImageSize",
"currentPostviewImageSize": "2M"
},
null,
{
"shootModeCandidates": [
"still"
],
"type": "shootMode",
"currentShootMode": "still"
},
null,
null,
null,
null,
null,
{
"fNumberCandidates": [],
"type": "fNumber",
"currentFNumber": "--"
},
null,
null,
null,
null,
{
"type": "shutterSpeed",
"shutterSpeedCandidates": [],
"currentShutterSpeed": "1/60"
},
{
"type": "whiteBalance",
"currentColorTemperature": -1,
"checkAvailability": true,
"currentWhiteBalanceMode": "Auto WB"
},
null
],
"id": 1
}
Дополнительная информация:
Обновил камеру до последней прошивки (версия 3.20), установил последнее приложение Smart Remote Control (версия 4.30).
Я полностью застрял здесь, любой совет был бы потрясающим.
Спасибо