本文整理汇总了C++中Parcel::readStrongBinder方法的典型用法代码示例。如果您正苦于以下问题:C++ Parcel::readStrongBinder方法的具体用法?C++ Parcel::readStrongBinder怎么用?C++ Parcel::readStrongBinder使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Parcel
的用法示例。
在下文中一共展示了Parcel::readStrongBinder方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: onTransact
status_t BnQService::onTransact(
uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)
{
// IPC should be from mediaserver only
IPCThreadState* ipc = IPCThreadState::self();
const int callerPid = ipc->getCallingPid();
const int callerUid = ipc->getCallingUid();
const bool permission = (callerUid == AID_MEDIA);
switch(code) {
case CONNECT: {
CHECK_INTERFACE(IQService, data, reply);
sp<IQClient> client =
interface_cast<IQClient>(data.readStrongBinder());
connect(client);
return NO_ERROR;
} break;
case SETMEM: {
CHECK_INTERFACE(IQService, data, reply);
sp<IMemory> sharedBuffer =
interface_cast<IMemory>(data.readStrongBinder());
setMemory(sharedBuffer);
return NO_ERROR;
} break;
default:
return BBinder::onTransact(code, data, reply, flags);
}
}
示例2: onTransact
status_t BnSoundTriggerClient::onTransact(
uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)
{
switch(code) {
case ON_RECOGNITION_EVENT: {
CHECK_INTERFACE(ISoundTriggerClient, data, reply);
sp<IMemory> eventMemory = interface_cast<IMemory>(
data.readStrongBinder());
onRecognitionEvent(eventMemory);
return NO_ERROR;
} break;
case ON_SOUNDMODEL_EVENT: {
CHECK_INTERFACE(ISoundTriggerClient, data, reply);
sp<IMemory> eventMemory = interface_cast<IMemory>(
data.readStrongBinder());
onSoundModelEvent(eventMemory);
return NO_ERROR;
} break;
case ON_SERVICE_STATE_CHANGE: {
CHECK_INTERFACE(ISoundTriggerClient, data, reply);
sp<IMemory> eventMemory = interface_cast<IMemory>(
data.readStrongBinder());
onServiceStateChange(eventMemory);
return NO_ERROR;
} break;
default:
return BBinder::onTransact(code, data, reply, flags);
}
}
示例3: read
status_t layer_state_t::read(const Parcel& input)
{
surface = input.readStrongBinder();
what = input.readUint32();
x = input.readFloat();
y = input.readFloat();
z = input.readUint32();
w = input.readUint32();
h = input.readUint32();
layerStack = input.readUint32();
alpha = input.readFloat();
flags = static_cast<uint8_t>(input.readUint32());
mask = static_cast<uint8_t>(input.readUint32());
const void* matrix_data = input.readInplace(sizeof(layer_state_t::matrix22_t));
if (matrix_data) {
matrix = *reinterpret_cast<layer_state_t::matrix22_t const *>(matrix_data);
} else {
return BAD_VALUE;
}
input.read(crop);
input.read(finalCrop);
handle = input.readStrongBinder();
frameNumber = input.readUint64();
overrideScalingMode = input.readInt32();
input.read(transparentRegion);
return NO_ERROR;
}
示例4: onTransact
status_t BnMediaLogService::onTransact(
uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)
{
switch (code) {
case REGISTER_WRITER: {
CHECK_INTERFACE(IMediaLogService, data, reply);
sp<IMemory> shared = interface_cast<IMemory>(data.readStrongBinder());
size_t size = (size_t) data.readInt32();
const char *name = data.readCString();
registerWriter(shared, size, name);
return NO_ERROR;
}
case UNREGISTER_WRITER: {
CHECK_INTERFACE(IMediaLogService, data, reply);
sp<IMemory> shared = interface_cast<IMemory>(data.readStrongBinder());
unregisterWriter(shared);
return NO_ERROR;
}
default:
return BBinder::onTransact(code, data, reply, flags);
}
}
示例5: onTransact
status_t BnCameraRecordingProxy::onTransact(
uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)
{
switch(code) {
case START_RECORDING: {
ALOGV("START_RECORDING");
CHECK_INTERFACE(ICameraRecordingProxy, data, reply);
sp<ICameraRecordingProxyListener> listener =
interface_cast<ICameraRecordingProxyListener>(data.readStrongBinder());
reply->writeInt32(startRecording(listener));
return NO_ERROR;
} break;
case STOP_RECORDING: {
ALOGV("STOP_RECORDING");
CHECK_INTERFACE(ICameraRecordingProxy, data, reply);
stopRecording();
return NO_ERROR;
} break;
case RELEASE_RECORDING_FRAME: {
ALOGV("RELEASE_RECORDING_FRAME");
CHECK_INTERFACE(ICameraRecordingProxy, data, reply);
sp<IMemory> mem = interface_cast<IMemory>(data.readStrongBinder());
releaseRecordingFrame(mem);
return NO_ERROR;
} break;
default:
return BBinder::onTransact(code, data, reply, flags);
}
}
示例6: onTransact
status_t BnMcuService::onTransact(
uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)
{
ALOGI("BnMcuService::onTransact, code[%d]", code);
switch (code) {
case GET_TEST: {
CHECK_INTERFACE(IMcuService, data, reply);
int result = getTest();
reply->writeInt32(result);
return NO_ERROR;
} break;
case obtain_info: {
CHECK_INTERFACE(IMcuService, data, reply);
int domain = data.readInt32();
int cmd = data.readInt32();
Parcel out;
bool res = obtainInfo(domain, cmd, out);
reply->appendFrom(&out, 0, out.dataSize());
reply->writeInt32(res?1:0);
out.freeData();
return NO_ERROR;
} break;
case send_info: {
CHECK_INTERFACE(IMcuService, data, reply);
int domain = data.readInt32();
int cmd = data.readInt32();
Parcel in;
if(data.dataAvail() >0)
{
in.appendFrom(&data, data.dataPosition(), data.dataSize()-data.dataPosition());
in.setDataPosition(0);
}
bool res = sendInfo(domain, cmd, in);
reply->writeInt32(res?1:0);
in.freeData();
return NO_ERROR;
} break;
case regist_data_changed_listener: {
CHECK_INTERFACE(IMcuService, data, reply);
int domain = data.readInt32();
sp<IDataChangedListener> client = interface_cast<IDataChangedListener>(data.readStrongBinder());
bool res = registDataChanagedListener(domain, client);
reply->writeInt32((res?1:0));
return NO_ERROR;
} break;
case unregist_data_changed_listener: {
CHECK_INTERFACE(IMcuService, data, reply);
int domain = data.readInt32();
sp<IDataChangedListener> client = interface_cast<IDataChangedListener>(data.readStrongBinder());
bool res = unregistDataChanagedListener(domain, client);
reply->writeInt32((res?1:0));
return NO_ERROR;
} break;
default:
return BBinder::onTransact(code, data, reply, flags);
}
}
示例7: onTransact
status_t BnSoundTrigger::onTransact(
uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)
{
switch(code) {
case DETACH: {
ALOGV("DETACH");
CHECK_INTERFACE(ISoundTrigger, data, reply);
detach();
return NO_ERROR;
} break;
case LOAD_SOUND_MODEL: {
CHECK_INTERFACE(ISoundTrigger, data, reply);
sp<IMemory> modelMemory = interface_cast<IMemory>(
data.readStrongBinder());
sound_model_handle_t handle;
status_t status = loadSoundModel(modelMemory, &handle);
reply->writeInt32(status);
if (status == NO_ERROR) {
reply->write(&handle, sizeof(sound_model_handle_t));
}
return NO_ERROR;
}
case UNLOAD_SOUND_MODEL: {
CHECK_INTERFACE(ISoundTrigger, data, reply);
sound_model_handle_t handle;
data.read(&handle, sizeof(sound_model_handle_t));
status_t status = unloadSoundModel(handle);
reply->writeInt32(status);
return NO_ERROR;
}
case START_RECOGNITION: {
CHECK_INTERFACE(ISoundTrigger, data, reply);
sound_model_handle_t handle;
data.read(&handle, sizeof(sound_model_handle_t));
sp<IMemory> dataMemory;
if (data.readInt32() != 0) {
dataMemory = interface_cast<IMemory>(data.readStrongBinder());
}
status_t status = startRecognition(handle, dataMemory);
reply->writeInt32(status);
return NO_ERROR;
}
case STOP_RECOGNITION: {
CHECK_INTERFACE(ISoundTrigger, data, reply);
sound_model_handle_t handle;
data.read(&handle, sizeof(sound_model_handle_t));
status_t status = stopRecognition(handle);
reply->writeInt32(status);
return NO_ERROR;
}
default:
return BBinder::onTransact(code, data, reply, flags);
}
}
示例8: onTransact
status_t BBinder::onTransact(
uint32_t code, const Parcel& data, Parcel* reply, uint32_t /*flags*/)
{
switch (code) {
case INTERFACE_TRANSACTION:
reply->writeString16(getInterfaceDescriptor());
return NO_ERROR;
case DUMP_TRANSACTION: {
int fd = data.readFileDescriptor();
int argc = data.readInt32();
Vector<String16> args;
for (int i = 0; i < argc && data.dataAvail() > 0; i++) {
args.add(data.readString16());
}
return dump(fd, args);
}
case SHELL_COMMAND_TRANSACTION: {
int in = data.readFileDescriptor();
int out = data.readFileDescriptor();
int err = data.readFileDescriptor();
int argc = data.readInt32();
Vector<String16> args;
for (int i = 0; i < argc && data.dataAvail() > 0; i++) {
args.add(data.readString16());
}
sp<IShellCallback> shellCallback = IShellCallback::asInterface(
data.readStrongBinder());
sp<IResultReceiver> resultReceiver = IResultReceiver::asInterface(
data.readStrongBinder());
// XXX can't add virtuals until binaries are updated.
//return shellCommand(in, out, err, args, resultReceiver);
(void)in;
(void)out;
(void)err;
if (resultReceiver != NULL) {
resultReceiver->send(INVALID_OPERATION);
}
return NO_ERROR;
}
case SYSPROPS_TRANSACTION: {
report_sysprop_change();
return NO_ERROR;
}
default:
return UNKNOWN_TRANSACTION;
}
}
示例9: onTransact
status_t BnCameraClient::onTransact(
uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)
{
switch(code) {
case NOTIFY_CALLBACK: {
ALOGV("NOTIFY_CALLBACK");
CHECK_INTERFACE(ICameraClient, data, reply);
int32_t msgType = data.readInt32();
int32_t ext1 = data.readInt32();
int32_t ext2 = 0;
if ((msgType == CAMERA_MSG_PREVIEW_FRAME) && (ext1 == CAMERA_FRAME_DATA_FD)) {
ext2 = data.readFileDescriptor();
ALOGD("onTransact: CAMERA_MSG_PREVIEW_FRAME fd = %d", ext2);
} else {
ext2 = data.readInt32();
}
notifyCallback(msgType, ext1, ext2);
return NO_ERROR;
} break;
case DATA_CALLBACK: {
ALOGV("DATA_CALLBACK");
CHECK_INTERFACE(ICameraClient, data, reply);
int32_t msgType = data.readInt32();
sp<IMemory> imageData = interface_cast<IMemory>(data.readStrongBinder());
camera_frame_metadata_t *metadata = NULL;
if (data.dataAvail() > 0) {
metadata = new camera_frame_metadata_t;
metadata->number_of_faces = data.readInt32();
metadata->faces = (camera_face_t *) data.readInplace(
sizeof(camera_face_t) * metadata->number_of_faces);
}
dataCallback(msgType, imageData, metadata);
if (metadata) delete metadata;
return NO_ERROR;
} break;
case DATA_CALLBACK_TIMESTAMP: {
ALOGV("DATA_CALLBACK_TIMESTAMP");
CHECK_INTERFACE(ICameraClient, data, reply);
nsecs_t timestamp = data.readInt64();
int32_t msgType = data.readInt32();
sp<IMemory> imageData = interface_cast<IMemory>(data.readStrongBinder());
dataCallbackTimestamp(timestamp, msgType, imageData);
return NO_ERROR;
} break;
default:
return BBinder::onTransact(code, data, reply, flags);
}
}
示例10: onTransact
status_t BnRemoteDisplayClient::onTransact(
uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)
{
switch (code) {
case ON_DISPLAY_CONNECTED: {
CHECK_INTERFACE(IRemoteDisplayClient, data, reply);
sp<IGraphicBufferProducer> surfaceTexture(
interface_cast<IGraphicBufferProducer>(data.readStrongBinder()));
uint32_t width = data.readInt32();
uint32_t height = data.readInt32();
uint32_t flags = data.readInt32();
uint32_t session = data.readInt32();
onDisplayConnected(surfaceTexture, width, height, flags, session);
return NO_ERROR;
}
case ON_DISPLAY_DISCONNECTED: {
CHECK_INTERFACE(IRemoteDisplayClient, data, reply);
onDisplayDisconnected();
return NO_ERROR;
}
case ON_DISPLAY_ERROR: {
CHECK_INTERFACE(IRemoteDisplayClient, data, reply);
int32_t error = data.readInt32();
onDisplayError(error);
return NO_ERROR;
}
default:
return BBinder::onTransact(code, data, reply, flags);
}
}
示例11: nativeReadFromParcel
static jlong nativeReadFromParcel(JNIEnv* env, jclass clazz,
jlong nativeObject, jobject parcelObj) {
Parcel* parcel = parcelForJavaObject(env, parcelObj);
if (parcel == NULL) {
doThrowNPE(env);
return 0;
}
sp<Surface> self(reinterpret_cast<Surface *>(nativeObject));
sp<IBinder> binder(parcel->readStrongBinder());
// update the Surface only if the underlying IGraphicBufferProducer
// has changed.
if (self != NULL
&& (self->getIGraphicBufferProducer()->asBinder() == binder)) {
// same IGraphicBufferProducer, return ourselves
return jlong(self.get());
}
sp<Surface> sur;
sp<IGraphicBufferProducer> gbp(interface_cast<IGraphicBufferProducer>(binder));
if (gbp != NULL) {
// we have a new IGraphicBufferProducer, create a new Surface for it
sur = new Surface(gbp, true);
// and keep a reference before passing to java
sur->incStrong(&sRefBaseOwner);
}
if (self != NULL) {
// and loose the java reference to ourselves
self->decStrong(&sRefBaseOwner);
}
return jlong(sur.get());
}
示例12: onTransact
status_t BnRTCNode::onTransact(
uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)
{
switch(code) {
case kIDTransport: {
rtc_binder_data_t out;
out.data = &data;
out.reply = reply;
// Reserved 4 bytes;
reply->writeInt32(0);
int ret = Transport(&out);
int pos = reply->dataPosition();
reply->setDataPosition(0);
reply->writeInt32(ret);
reply->setDataPosition(pos);
return NO_ERROR;
} break;
case kIDResigerObs: {
CHECK_INTERFACE(IRTCNode, data, reply);
sp<IBinder> handle = data.readStrongBinder();
sp<IRTCNode> node = interface_cast<IRTCNode>(handle);
int ret = RegisterObserver(node);
reply->writeInt32(ret);
return NO_ERROR;
}break;
default:
return BBinder::onTransact(code, data, reply, flags);
}
}
示例13: onTransact
status_t BnGpsdService::onTransact(uint32_t code,
const Parcel &data,
Parcel *reply,
uint32_t flags)
{
sp<IGpsdClient> listener;
printf("%s called, code: %d\n", __FUNCTION__, code);
switch (code) {
case GET_GPS:
CHECK_INTERFACE(IGpsdService, data, reply);
listener = interface_cast<IGpsdClient>(data.readStrongBinder());
listener->onChanged(234);
// listener->show();
// reply->writeInt32(EX_NO_ERROR);
return android::NO_ERROR;
break;
default:
return BBinder::onTransact(code, data, reply, flags);
}
return android::NO_ERROR;
}
示例14: onTransact
status_t BnCameraService::onTransact(
uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)
{
switch(code) {
case GET_NUMBER_OF_CAMERAS: {
CHECK_INTERFACE(ICameraService, data, reply);
reply->writeInt32(getNumberOfCameras());
return NO_ERROR;
} break;
case GET_CAMERA_INFO: {
CHECK_INTERFACE(ICameraService, data, reply);
CameraInfo cameraInfo;
memset(&cameraInfo, 0, sizeof(cameraInfo));
status_t result = getCameraInfo(data.readInt32(), &cameraInfo);
reply->writeInt32(cameraInfo.facing);
reply->writeInt32(cameraInfo.orientation);
reply->writeInt32(result);
return NO_ERROR;
} break;
case CONNECT: {
CHECK_INTERFACE(ICameraService, data, reply);
sp<ICameraClient> cameraClient = interface_cast<ICameraClient>(data.readStrongBinder());
sp<ICamera> camera = connect(cameraClient, data.readInt32());
reply->writeStrongBinder(camera->asBinder());
return NO_ERROR;
} break;
default:
return BBinder::onTransact(code, data, reply, flags);
}
}
示例15: onTransact
status_t BnStreamSource::onTransact(
uint32_t code, const Parcel &data, Parcel *reply, uint32_t flags) {
switch (code) {
case SET_LISTENER:
{
CHECK_INTERFACE(IStreamSource, data, reply);
setListener(
interface_cast<IStreamListener>(data.readStrongBinder()));
break;
}
case SET_BUFFERS:
{
CHECK_INTERFACE(IStreamSource, data, reply);
size_t n = static_cast<size_t>(data.readInt32());
Vector<sp<IMemory> > buffers;
for (size_t i = 0; i < n; ++i) {
sp<IMemory> mem =
interface_cast<IMemory>(data.readStrongBinder());
buffers.push(mem);
}
setBuffers(buffers);
break;
}
case ON_BUFFER_AVAILABLE:
{
CHECK_INTERFACE(IStreamSource, data, reply);
onBufferAvailable(static_cast<size_t>(data.readInt32()));
break;
}
case FLAGS:
{
CHECK_INTERFACE(IStreamSource, data, reply);
reply->writeInt32(this->flags());
break;
}
default:
return BBinder::onTransact(code, data, reply, flags);
}
return OK;
}