本文整理汇总了C++中String8::appendFormat方法的典型用法代码示例。如果您正苦于以下问题:C++ String8::appendFormat方法的具体用法?C++ String8::appendFormat怎么用?C++ String8::appendFormat使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类String8
的用法示例。
在下文中一共展示了String8::appendFormat方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: dumpClient
status_t CameraDeviceClient::dumpClient(int fd, const Vector<String16>& args) {
String8 result;
result.appendFormat("CameraDeviceClient[%d] (%p) dump:\n",
mCameraId,
(getRemoteCallback() != NULL ?
IInterface::asBinder(getRemoteCallback()).get() : NULL) );
result.appendFormat(" Current client UID %u\n", mClientUid);
result.append(" State:\n");
result.appendFormat(" Request ID counter: %d\n", mRequestIdCounter);
if (mInputStream.configured) {
result.appendFormat(" Current input stream ID: %d\n",
mInputStream.id);
} else {
result.append(" No input stream configured.\n");
}
if (!mStreamMap.isEmpty()) {
result.append(" Current output stream IDs:\n");
for (size_t i = 0; i < mStreamMap.size(); i++) {
result.appendFormat(" Stream %d\n", mStreamMap.valueAt(i));
}
} else {
result.append(" No output streams configured.\n");
}
write(fd, result.string(), result.size());
// TODO: print dynamic/request section from most recent requests
mFrameProcessor->dump(fd, args);
return dumpDevice(fd, args);
}
示例2: dump
// ----------------------------------------------------------------------------
void BackupBufDumper::dump(String8 &result, const char* prefix) {
// dump status to log buffer first
result.appendFormat("%s*BackupBufDumper mRingBuffer(size=%u, count=%u)\n",
prefix, mRingBuffer.getSize(), mRingBuffer.getCount());
for (size_t i = 0; i < mRingBuffer.getValidSize(); i++) {
const sp<BackupBuffer>& buffer = getItem(i);
result.appendFormat("%s [%02u] handle(source=%p, backup=%p)\n",
prefix, i, buffer->mSourceHandle, buffer->mGraphicBuffer->handle);
}
// start buffer dump check and process
String8 name;
String8 name_prefix;
BufferQueueDump::getDumpFileName(name, mName);
for (size_t i = 0; i < mRingBuffer.getValidSize(); i++) {
const sp<BackupBuffer>& buffer = getItem(i);
name_prefix = String8::format("[%s](Backup%02u_H%p_ts%" PRId64 ")",
name.string(), i, buffer->mSourceHandle, ns2ms(buffer->mTimeStamp));
getGraphicBufferUtil().dump(buffer->mGraphicBuffer, name_prefix.string(), DUMP_FILE_PATH);
BQD_LOGI("[dump] Backup:%02u, handle(source=%p, backup=%p)",
i, buffer->mSourceHandle, buffer->mGraphicBuffer->handle);
}
}
示例3: dump
std::string RecentEventLogger::dump() const {
std::lock_guard<std::mutex> lk(mLock);
//TODO: replace String8 with std::string completely in this function
String8 buffer;
buffer.appendFormat("last %zu events\n", mRecentEvents.size());
int j = 0;
for (int i = mRecentEvents.size() - 1; i >= 0; --i) {
const auto& ev = mRecentEvents[i];
struct tm * timeinfo = localtime(&(ev.mWallTime.tv_sec));
buffer.appendFormat("\t%2d (ts=%.9f, wall=%02d:%02d:%02d.%03d) ",
++j, ev.mEvent.timestamp/1e9, timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec,
(int) ns2ms(ev.mWallTime.tv_nsec));
// data
if (mSensorType == SENSOR_TYPE_STEP_COUNTER) {
buffer.appendFormat("%" PRIu64 ", ", ev.mEvent.u64.step_counter);
} else {
for (size_t k = 0; k < mEventSize; ++k) {
buffer.appendFormat("%.2f, ", ev.mEvent.data[k]);
}
}
buffer.append("\n");
}
return std::string(buffer.string());
}
示例4: _l
void SensorService::SensorEventConnection::dump(String8& result) {
Mutex::Autolock _l(mConnectionLock);
result.appendFormat("\tOperating Mode: %s\n",mDataInjectionMode ? "DATA_INJECTION" : "NORMAL");
result.appendFormat("\t %s | WakeLockRefCount %d | uid %d | cache size %d | "
"max cache size %d\n", mPackageName.string(), mWakeLockRefCount, mUid, mCacheSize,
mMaxCacheSize);
for (size_t i = 0; i < mSensorInfo.size(); ++i) {
const FlushInfo& flushInfo = mSensorInfo.valueAt(i);
result.appendFormat("\t %s 0x%08x | status: %s | pending flush events %d \n",
mService->getSensorName(mSensorInfo.keyAt(i)).string(),
mSensorInfo.keyAt(i),
flushInfo.mFirstFlushPending ? "First flush pending" :
"active",
flushInfo.mPendingFlushEventsToSend);
}
#if DEBUG_CONNECTIONS
result.appendFormat("\t events recvd: %d | sent %d | cache %d | dropped %d |"
" total_acks_needed %d | total_acks_recvd %d\n",
mEventsReceived,
mEventsSent,
mEventsSentFromCache,
mEventsReceived - (mEventsSentFromCache + mEventsSent + mCacheSize),
mTotalAcksNeeded,
mTotalAcksReceived);
#endif
}
开发者ID:debian-pkg-android-tools,项目名称:android-platform-frameworks-native,代码行数:26,代码来源:SensorEventConnection.cpp
示例5: dump
void RenderEngine::dump(String8& result) {
const GLExtensions& extensions(GLExtensions::getInstance());
result.appendFormat("GLES: %s, %s, %s\n",
extensions.getVendor(),
extensions.getRenderer(),
extensions.getVersion());
result.appendFormat("%s\n", extensions.getExtension());
}
示例6: find
static bool find(String8& result,
const String8& pattern, const char* const search, bool exact) {
// in the emulator case, we just return the hardcoded name
// of the software renderer.
if (checkGlesEmulationStatus() == 0) {
ALOGD("Emulator without GPU support detected. "
"Fallback to software renderer.");
#if defined(__LP64__)
result.setTo("/system/lib64/egl/libGLES_android.so");
#else
result.setTo("/system/lib/egl/libGLES_android.so");
#endif
return true;
}
if (exact) {
String8 absolutePath;
absolutePath.appendFormat("%s/%s.so", search, pattern.string());
if (!access(absolutePath.string(), R_OK)) {
result = absolutePath;
return true;
}
return false;
}
DIR* d = opendir(search);
if (d != NULL) {
struct dirent cur;
struct dirent* e;
while (readdir_r(d, &cur, &e) == 0 && e) {
if (e->d_type == DT_DIR) {
continue;
}
if (!strcmp(e->d_name, "libGLES_android.so")) {
// always skip the software renderer
continue;
}
if (strstr(e->d_name, pattern.string()) == e->d_name) {
if (!strcmp(e->d_name + strlen(e->d_name) - 3, ".so")) {
result.clear();
result.appendFormat("%s/%s", search, e->d_name);
closedir(d);
return true;
}
}
}
closedir(d);
}
return false;
}
示例7: write
void Camera3ZslStream::dump(int fd, const Vector<String16> &args) const {
(void) args;
String8 lines;
lines.appendFormat(" Stream[%d]: ZSL\n", mId);
write(fd, lines.string(), lines.size());
Camera3IOStreamBase::dump(fd, args);
lines = String8();
lines.appendFormat(" Input buffers pending: %zu, in flight %zu\n",
mInputBufferQueue.size(), mBuffersInFlight.size());
write(fd, lines.string(), lines.size());
}
示例8: dump
void SensorDevice::dump(String8& result)
{
if (!mSensorModule) return;
sensor_t const* list;
ssize_t count = mSensorModule->get_sensors_list(mSensorModule, &list);
result.appendFormat("halVersion 0x%08x\n", getHalDeviceVersion());
result.appendFormat("%d h/w sensors:\n", int(count));
Mutex::Autolock _l(mLock);
for (size_t i=0 ; i<size_t(count) ; i++) {
const Info& info = mActivationCount.valueFor(list[i].handle);
if (info.batchParams.isEmpty()) continue;
result.appendFormat("handle=0x%08x, active-count=%zu, batch_period(ms)={ ", list[i].handle,
info.batchParams.size());
for (size_t j = 0; j < info.batchParams.size(); j++) {
const BatchParams& params = info.batchParams.valueAt(j);
result.appendFormat("%4.1f%s", params.batchDelay / 1e6f,
j < info.batchParams.size() - 1 ? ", " : "");
}
result.appendFormat(" }, selected=%4.1f ms\n", info.bestBatchParams.batchDelay / 1e6f);
result.appendFormat("handle=0x%08x, active-count=%zu, batch_timeout(ms)={ ", list[i].handle,
info.batchParams.size());
for (size_t j = 0; j < info.batchParams.size(); j++) {
BatchParams params = info.batchParams.valueAt(j);
result.appendFormat("%4.1f%s", params.batchTimeout / 1e6f,
j < info.batchParams.size() - 1 ? ", " : "");
}
result.appendFormat(" }, selected=%4.1f ms\n", info.bestBatchParams.batchTimeout / 1e6f);
}
}
示例9: GetRoutingMode
static void
InternalSetAudioRoutesGB(SwitchState aState)
{
audio_io_handle_t handle =
AudioSystem::getOutput((AudioSystem::stream_type)AudioSystem::SYSTEM);
String8 cmd;
if (aState == SWITCH_STATE_HEADSET || aState == SWITCH_STATE_HEADPHONE) {
cmd.appendFormat("routing=%d", GetRoutingMode(nsIAudioManager::FORCE_HEADPHONES));
} else if (aState == SWITCH_STATE_OFF) {
cmd.appendFormat("routing=%d", GetRoutingMode(nsIAudioManager::FORCE_SPEAKER));
}
AudioSystem::setParameters(handle, cmd);
}
示例10:
String8 Status::toString8() const {
String8 ret;
if (mException == EX_NONE) {
ret.append("No error");
} else {
ret.appendFormat("Status(%d): '", mException);
if (mException == EX_SERVICE_SPECIFIC ||
mException == EX_TRANSACTION_FAILED) {
ret.appendFormat("%d: ", mErrorCode);
}
ret.append(String8(mMessage));
ret.append("'");
}
return ret;
}
示例11: getRatesForAF
void HDMIAudioCaps::getRatesForAF(String8& rates) {
Mutex::Autolock _l(mLock);
rates.clear();
// If the sink does not support basic audio, then it supports no audio.
if (!mBasicAudioSupported)
return;
// Basic audio always supports from 32k through 38k.
uint32_t tmp = kSR_32000 | kSR_44100 | kSR_48000;
// To keep things simple, only report mode information for the PCM mode
// which supports the maximum number of channels.
ssize_t ndx = getMaxChModeNdx_l();
if (ndx >= 0)
tmp |= mModes[ndx].sr_bitmask;
bool first = true;
for (uint32_t i = 1; tmp; i <<= 1) {
if (i & tmp) {
rates.appendFormat(first ? "%d" : "|%d", srMaskToSR(i));
first = false;
tmp &= ~i;
}
}
}
示例12: logHwcProps
void HwcDebug::logHwcProps(uint32_t listFlags)
{
static int hwcModuleCompType = -1;
static int sMdpCompMaxLayers = 0;
static String8 hwcModuleCompTypeLog("");
if (-1 == hwcModuleCompType) {
// One time stuff
char mdpCompPropStr[PROPERTY_VALUE_MAX];
if (property_get("debug.mdpcomp.maxlayer", mdpCompPropStr, NULL) > 0) {
sMdpCompMaxLayers = atoi(mdpCompPropStr);
}
hwcModuleCompType =
qdutils::QCCompositionType::getInstance().getCompositionType();
hwcModuleCompTypeLog.appendFormat("%s%s%s%s%s%s",
// Is hwc module composition type now a bit-field?!
(hwcModuleCompType == qdutils::COMPOSITION_TYPE_GPU)?
"[GPU]": "",
(hwcModuleCompType & qdutils::COMPOSITION_TYPE_MDP)?
"[MDP]": "",
(hwcModuleCompType & qdutils::COMPOSITION_TYPE_C2D)?
"[C2D]": "",
(hwcModuleCompType & qdutils::COMPOSITION_TYPE_CPU)?
"[CPU]": "",
(hwcModuleCompType & qdutils::COMPOSITION_TYPE_DYN)?
"[DYN]": "",
(hwcModuleCompType >= (qdutils::COMPOSITION_TYPE_DYN << 1))?
"[???]": "");
}
ALOGI("Display[%s] Layer[*] %s-HwcModuleCompType, %d-layer MdpComp %s",
mDisplayName, hwcModuleCompTypeLog.string(), sMdpCompMaxLayers,
(listFlags & HWC_GEOMETRY_CHANGED)? "[HwcList Geometry Changed]": "");
}
示例13: throwExceptionWithRowCol
static void throwExceptionWithRowCol(JNIEnv* env, jint row, jint column) {
String8 msg;
msg.appendFormat("Couldn't read row %d, col %d from CursorWindow. "
"Make sure the Cursor is initialized correctly before accessing data from it.",
row, column);
jniThrowException(env, "java/lang/IllegalStateException", msg.string());
}
示例14:
nsresult
AudioManager::Observe(nsISupports* aSubject,
const char* aTopic,
const PRUnichar* aData)
{
if (!strcmp(aTopic, BLUETOOTH_SCO_STATUS_CHANGED)) {
if (aData) {
String8 cmd;
cmd.appendFormat("bt_samplerate=%d", kBtSampleRate);
AudioSystem::setParameters(0, cmd);
const char* address = NS_ConvertUTF16toUTF8(nsDependentString(aData)).get();
AudioSystem::setDeviceConnectionState(AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET,
AUDIO_POLICY_DEVICE_STATE_AVAILABLE, address);
AudioSystem::setDeviceConnectionState(AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET,
AUDIO_POLICY_DEVICE_STATE_AVAILABLE, address);
} else {
AudioSystem::setDeviceConnectionState(AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET,
AUDIO_POLICY_DEVICE_STATE_UNAVAILABLE, "");
AudioSystem::setDeviceConnectionState(AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET,
AUDIO_POLICY_DEVICE_STATE_UNAVAILABLE, "");
}
return NS_OK;
}
return NS_ERROR_UNEXPECTED;
}
示例15: GetSessionIdString
static String8 GetSessionIdString(const Vector<uint8_t> &sessionId) {
String8 sessionIdStr;
for (size_t i = 0; i < sessionId.size(); ++i) {
sessionIdStr.appendFormat("%u ", sessionId[i]);
}
return sessionIdStr;
}