I need to develop a function for real-time access to pictures taken by SONY camera on iOS. It links iPhone with SONY camera through data cable, and then SONY camera takes pictures and real-time access to pictures taken by camera on iPhone. But at the moment I don’t know how to implement this feature.
- (void)sonyAddTimer {
self.timer = [NSTimer scheduledTimerWithTimeInterval:15.0 target:self selector:@selector(getEventData3) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
}
- (void)getEventData3 {
//获取事件数据
NSData* commandBuffer = NULL;
PTPOperationRequest* request = [[PTPOperationRequest alloc] init];
request.operationCode = PTPOperationCodeGetEventData3;
request.numberOfParameters = 0;
commandBuffer = request.commandBuffer;
NSLog(@"nSending PTP request:%@",[request description]);
if (@available(iOS 13.0, *)) {
[self.cameraDevice requestSendPTPCommand:commandBuffer outData:NULL completion:^(NSData * _Nonnull responseData, NSData * _Nonnull ptpResponseData, NSError * _Nullable error) {
NSLog(@"getEventData3---responseData = %@", responseData);
PTPOperationResponse *ptpResponse = NULL;
if ( ptpResponseData ) {
ptpResponse = [[PTPOperationResponse alloc] initWithData:ptpResponseData];
NSLog(@"n getEventData3 Received response:%@",[ptpResponse description]);
[self getObjectInfoWithInt:0xffffc001];
}
}];
} else {
}
}
- (void)getObjectInfoWithInt:(int)intValue2 {
//获取对象信息
NSData* commandBuffer = NULL;
PTPOperationRequest* request = [[PTPOperationRequest alloc] init];
request.operationCode = PTPOperationCodeGetObjectInfo;
request.numberOfParameters = 1;
request.parameter1 = intValue2;
commandBuffer = request.commandBuffer;
NSLog(@"nSending PTP request:%@",[request description]);
if (@available(iOS 13.0, *)) {
[self.cameraDevice requestSendPTPCommand:commandBuffer outData:NULL completion:^(NSData * _Nonnull responseData, NSData * _Nonnull ptpResponseData, NSError * _Nullable error) {
PTPOperationResponse *ptpResponse = NULL;
if ( ptpResponseData ) {
ptpResponse = [[PTPOperationResponse alloc] initWithData:ptpResponseData];
NSLog(@"n getObjectInfo Received response:%@",[ptpResponse description]);
NSLog(@"getObjectInfo--responseData=%@",responseData);
[self getObjectWithIntValue:intValue2];
}
}];
} else {
// Fallback on earlier versions
}
}
- (void)getObjectWithIntValue:(int)intValue2 {
//获取对象
NSData* commandBuffer = NULL;
PTPOperationRequest* request = [[PTPOperationRequest alloc] init];
request.operationCode = PTPOperationCodeGetObject;
request.numberOfParameters = 1;
request.parameter1 = intValue2;
commandBuffer = request.commandBuffer;
NSLog(@"nSending PTP request:%@",[request description]);
if (@available(iOS 13.0, *)) {
[self.cameraDevice requestSendPTPCommand:commandBuffer outData:NULL completion:^(NSData * _Nonnull responseData, NSData * _Nonnull ptpResponseData, NSError * _Nullable error) {
PTPOperationResponse *ptpResponse = NULL;
if ( ptpResponseData ) {
ptpResponse = [[PTPOperationResponse alloc] initWithData:ptpResponseData];
NSLog(@"n getObject Received response:%@",[ptpResponse description]);
NSLog(@"getObject---responseData=%@",responseData);
UIImage *image = [UIImage imageWithData:responseData];
if (image) {
NSString *imgMd5String = [self calculateMD5ForJPEGImage:image];
NSLog(@"图片MD5值 imgMd5String = %@",imgMd5String);
[self uploadImageWithImage:image md5String:imgMd5String];
}
}
}];
} else {
}
}
This is the code I tried to write, but with the frequent disconnection and re-link of the camera, I have confirmed that the data cable and the camera plug are in good condition.