Java 类android.annotation.TargetApi 实例源码
项目:ceji_android
文件:PlatformUtil.java
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public static <A, B, C> void executeTask(AsyncTask<A, B, C> task, A... params ) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params);
}
else {
task.execute(params);
}
}
项目:QMUI_Android
文件:QMUIDeviceHelper.java
@TargetApi(19)
private static boolean checkOp(Context context, int op) {
final int version = Build.VERSION.SDK_INT;
if (version >= Build.VERSION_CODES.KITKAT) {
AppOpsManager manager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
try {
Method method = manager.getClass().getDeclaredMethod("checkOp", int.class, int.class, String.class);
int property = (Integer) method.invoke(manager, op,
Binder.getCallingUid(), context.getPackageName());
return AppOpsManager.MODE_ALLOWED == property;
} catch (Exception e) {
e.printStackTrace();
}
}
return false;
}
项目:DisplayingBitmaps
文件:ImageCache.java
/**
* Get the size in bytes of a bitmap in a BitmapDrawable. Note that from Android 4.4 (KitKat)
* onward this returns the allocated memory size of the bitmap which can be larger than the
* actual bitmap data byte count (in the case it was re-used).
*
* @param value
* @return size in bytes
*/
@TargetApi(VERSION_CODES.KITKAT)
public static int getBitmapSize(BitmapDrawable value) {
Bitmap bitmap = value.getBitmap();
// From KitKat onward use getAllocationByteCount() as allocated bytes can potentially be
// larger than bitmap byte count.
if (Utils.hasKitKat()) {
return bitmap.getAllocationByteCount();
}
if (Utils.hasHoneycombMR1()) {
return bitmap.getByteCount();
}
// Pre HC-MR1
return bitmap.getRowBytes() * bitmap.getHeight();
}
项目:Android-Practice
文件:ImageGridFragment.java
@TargetApi(VERSION_CODES.JELLY_BEAN)
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
final Intent i = new Intent(getActivity(), ImageDetailActivity.class);
i.putExtra(ImageDetailActivity.EXTRA_IMAGE, (int) id);
if (Utils.hasJellyBean()) {
// makeThumbnailScaleUpAnimation() looks kind of ugly here as the loading spinner may
// show plus the thumbnail image in GridView is cropped. so using
// makeScaleUpAnimation() instead.
ActivityOptions options =
ActivityOptions.makeScaleUpAnimation(v, 0, 0, v.getWidth(), v.getHeight());
getActivity().startActivity(i, options.toBundle());
} else {
startActivity(i);
}
}
项目:CoolClock
文件:MainActivity.java
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.tv_setting:
Intent intent = new Intent(this, SettingActivity.class);
startActivityForResult(intent, SETTING_REQUEST_CODE);
tv_setting.setVisibility(View.GONE);
break;
case R.id.rel_main:
localWakeLock.isHeld();
switchMode(MODE_SETTING_OTHER);
break;
case R.id.tv_time:
switchMode(MODE_SETTING_OTHER);
break;
}
}
项目:stynico
文件:MD5_jni.java
/** 打开通知栏消息 */
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
private void openNotify(AccessibilityEvent event)
{
if (event.getParcelableData() == null || !(event.getParcelableData() instanceof Notification))
{
return;
}
// 将微信的通知栏消息打开
Notification notification = (Notification) event.getParcelableData();
PendingIntent pendingIntent = notification.contentIntent;
try
{
pendingIntent.send();
} catch (PendingIntent.CanceledException e)
{
e.printStackTrace();
}
}
项目:HeadlineNews
文件:SDCardUtils.java
/**
* 获取SD卡信息
*
* @return SDCardInfo
*/
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
public static String getSDCardInfo() {
if (!isSDCardEnable()) return null;
SDCardInfo sd = new SDCardInfo();
sd.isExist = true;
StatFs sf = new StatFs(Environment.getExternalStorageDirectory().getPath());
sd.totalBlocks = sf.getBlockCountLong();
sd.blockByteSize = sf.getBlockSizeLong();
sd.availableBlocks = sf.getAvailableBlocksLong();
sd.availableBytes = sf.getAvailableBytes();
sd.freeBlocks = sf.getFreeBlocksLong();
sd.freeBytes = sf.getFreeBytes();
sd.totalBytes = sf.getTotalBytes();
return sd.toString();
}
项目:JewelryUI
文件:JazzyViewPager.java
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
private void manageLayer(View v, boolean enableHardware) {
if (!API_11) return;
int layerType = enableHardware ? View.LAYER_TYPE_HARDWARE : View.LAYER_TYPE_NONE;
if (layerType != v.getLayerType())
v.setLayerType(layerType, null);
}
项目:permissionUtil
文件:PermissionUtil.java
/**
* 检查单个权限是否被允许,(当应用第一次安装的时候,不会有rational的值,此时返回均是denied)
*
* @param permission The name of the permission being checked.
* @return PermissionUtil.PERMISSION_GRANTED / PERMISSION_DENIED / PERMISSION_RATIONAL or {@code null}
* if context is not instanceof Activity.
*/
@TargetApi(Build.VERSION_CODES.M)
public int checkSinglePermission(String permission) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
return PERMISSION_GRANTED;
}
if (mActivity == null) {
mActivity = getTopActivity();
}
if (mActivity != null) {
if (mActivity.checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED) {
return PERMISSION_GRANTED;
} else {
if (mActivity.shouldShowRequestPermissionRationale(permission)) {
return PERMISSION_RATIONAL;
} else {
return PERMISSION_DENIED;
}
}
} else {
Log.e(TAG, "TopActivity not find");
return -1;
}
}
项目:GitHub
文件:SystemBarTintManager.java
@TargetApi(14)
private boolean hasNavBar(Context context) {
Resources res = context.getResources();
int resourceId = res.getIdentifier(SHOW_NAV_BAR_RES_NAME, "bool", "android");
if (resourceId != 0) {
boolean hasNav = res.getBoolean(resourceId);
// check override flag (see static block)
if ("1".equals(sNavBarOverride)) {
hasNav = false;
} else if ("0".equals(sNavBarOverride)) {
hasNav = true;
}
return hasNav;
} else { // fallback
return !ViewConfiguration.get(context).hasPermanentMenuKey();
}
}
项目:OSchina_resources_android
文件:ImageGalleryActivity.java
@SuppressLint("ObsoleteSdkInt")
@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)
@SuppressWarnings("deprecation")
private synchronized Point getDisplayDimens() {
if (mDisplayDimens != null) {
return mDisplayDimens;
}
Point displayDimens;
WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
assert windowManager != null;
Display display = windowManager.getDefaultDisplay();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
displayDimens = new Point();
display.getSize(displayDimens);
} else {
displayDimens = new Point(display.getWidth(), display.getHeight());
}
// In this we can only get 85% width and 60% height
//displayDimens.y = (int) (displayDimens.y * 0.60f);
//displayDimens.x = (int) (displayDimens.x * 0.85f);
mDisplayDimens = displayDimens;
return mDisplayDimens;
}
项目:WebPager
文件:PagerWebViewClient.java
@TargetApi(24)
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
Log.d(TAG, "shouldOverrideUrlLoading() called with: request = [" + request.getUrl() + "]");
if (pager.webviewClient != null) {
if (pager.webviewClient.shouldOverrideUrlLoading(view, request)) {
return true;
}
}
if (handleUrlLoading(view, request.getUrl().toString())) {
return true;
}
return super.shouldOverrideUrlLoading(view, request);
}
项目:MobileAppForPatient
文件:AppUtility.java
/**
*
* @param context
* @param title
* @param message
* @param isCritical
*/
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
public static void sendNotification(Context context, String title, String message, boolean isCritical) {
Intent broadCastIntent = new Intent(context, DashboardActivity.class);
PendingIntent pIntent = PendingIntent.getActivity(context, (int) System.currentTimeMillis(), broadCastIntent, 0);
NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.app_icon)
.setContentIntent(pIntent)
.setAutoCancel(true).setContentTitle("" + title);
if (!TextUtils.isEmpty(message)) {
mBuilder.setContentText(message);
}
if (isCritical) {
mBuilder.setVibrate(new long[]{100, 250}).setDefaults(Notification.DEFAULT_SOUND);
mBuilder.setColor(Color.RED);
} else {
mBuilder.setColor(Color.GREEN);
}
mBuilder.setContentIntent(pIntent);
mNotificationManager.notify(0, mBuilder.build());
}
项目:Saiy-PS
文件:SaiyTextToSpeech.java
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private SaiyVoice getEngineDefaultSaiyVoice() {
final Voice voice = getDefaultVoice();
if (voice != null) {
final SaiyVoice saiyVoice = new SaiyVoice(voice);
saiyVoice.setEngine(getInitialisedEngine());
saiyVoice.setGender(saiyVoice.getName());
if (DEBUG) {
MyLog.i(CLS_NAME, "getEngineDefaultSaiyVoice: setting Gender: " + saiyVoice.getGender().name());
}
return saiyVoice;
} else {
if (DEBUG) {
MyLog.i(CLS_NAME, "getEngineDefaultSaiyVoice: voice null");
}
return null;
}
}
项目:PreviewSeekBar
文件:CustomTimeBar.java
@TargetApi(21)
@Override
public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
super.onInitializeAccessibilityNodeInfo(info);
info.setClassName(com.google.android.exoplayer2.ui.DefaultTimeBar.class.getCanonicalName());
info.setContentDescription(getProgressText());
if (duration <= 0) {
return;
}
if (Util.SDK_INT >= 21) {
info.addAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_SCROLL_FORWARD);
info.addAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_SCROLL_BACKWARD);
} else if (Util.SDK_INT >= 16) {
info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD);
info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD);
}
}
项目:ChatExchange-old
文件:FloatingActionButton.java
/**
* Sets the shadow color and radius to mimic the native elevation.
*
* <p><b>API 21+</b>: Sets the native elevation of this view, in pixels. Updates margins to
* make the view hold its position in layout across different platform versions.</p>
*/
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public void setElevationCompat(float elevation) {
mShadowColor = 0x26000000;
mShadowRadius = Math.round(elevation / 2);
mShadowXOffset = 0;
mShadowYOffset = Math.round(mFabSize == SIZE_NORMAL ? elevation : elevation / 2);
if (Util.hasLollipop()) {
super.setElevation(elevation);
mUsingElevationCompat = true;
mShowShadow = false;
updateBackground();
ViewGroup.LayoutParams layoutParams = getLayoutParams();
if (layoutParams != null) {
setLayoutParams(layoutParams);
}
} else {
mShowShadow = true;
updateBackground();
}
}
项目:android-chessclock
文件:TimePickerView.java
/**
* Set the reference of seconds picker, its digit format and register value change listener.
*
* @param pickerVisible if false, removes the spinner widget.
*/
@TargetApi(11)
protected void setupSecondPicker(boolean pickerVisible) {
mSecondPicker = (NumberPicker) findViewById(R.id.seconds);
if (pickerVisible) {
mSecondPicker.setMinValue(0);
mSecondPicker.setMaxValue(59);
mSecondPicker.setFormatter(TWO_DIGIT_FORMATTER);
mSecondPicker.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
mCurrentSecond = newVal;
}
});
} else {
mHourPicker.setVisibility(View.GONE);
}
}
项目:Android-Practice
文件:ImageCache.java
/**
* @param candidate - Bitmap to check
* @param targetOptions - Options that have the out* value populated
* @return true if <code>candidate</code> can be used for inBitmap re-use with
* <code>targetOptions</code>
*/
@TargetApi(VERSION_CODES.KITKAT)
private static boolean canUseForInBitmap(
Bitmap candidate, BitmapFactory.Options targetOptions) {
//BEGIN_INCLUDE(can_use_for_inbitmap)
if (!Utils.hasKitKat()) {
// On earlier versions, the dimensions must match exactly and the inSampleSize must be 1
return candidate.getWidth() == targetOptions.outWidth
&& candidate.getHeight() == targetOptions.outHeight
&& targetOptions.inSampleSize == 1;
}
// From Android 4.4 (KitKat) onward we can re-use if the byte size of the new bitmap
// is smaller than the reusable bitmap candidate allocation byte count.
int width = targetOptions.outWidth / targetOptions.inSampleSize;
int height = targetOptions.outHeight / targetOptions.inSampleSize;
int byteCount = width * height * getBytesPerPixel(candidate.getConfig());
return byteCount <= candidate.getAllocationByteCount();
//END_INCLUDE(can_use_for_inbitmap)
}
项目:FlickLauncher
文件:LauncherAppWidgetProviderInfo.java
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public Drawable getIcon(Context context, IconCache cache) {
if (isCustomWidget) {
return cache.getFullResIcon(provider.getPackageName(), icon);
}
return super.loadIcon(context,
LauncherAppState.getInstance().getInvariantDeviceProfile().fillResIconDpi);
}
项目:ESDLA-Quiz
文件:GameActivity.java
/**
* SoundPool creator with the new constructor available since API 21
*/
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private void createNewSoundPool() {
Log.d(this.getClass().getSimpleName(), "New soundpool constructor");
AudioAttributes attr = new AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_GAME)
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION).build();
soundPool = new SoundPool.Builder().setMaxStreams(1).setAudioAttributes(attr).build();
correctSound = soundPool.load(this, R.raw.correct_sound, 1);
wrongSound = soundPool.load(this, R.raw.wrong_sound, 1);
}
项目:DateTimePicker
文件:TextInputTimePickerView.java
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public TextInputTimePickerView(Context context, AttributeSet attrs, int defStyle,
int defStyleRes) {
super(context, attrs, defStyle, defStyleRes);
attrHandler(context, attrs, defStyle, defStyleRes);
}
项目:ChatShala
文件:Utility.java
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
public static boolean checkPermission(final Context context)
{
int currentAPIVersion = Build.VERSION.SDK_INT;
if(currentAPIVersion>=android.os.Build.VERSION_CODES.M)
{
if (ContextCompat.checkSelfPermission(context, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale((Activity) context, Manifest.permission.READ_EXTERNAL_STORAGE)) {
AlertDialog.Builder alertBuilder = new AlertDialog.Builder(context);
alertBuilder.setCancelable(true);
alertBuilder.setTitle("Permission necessary");
alertBuilder.setMessage("External storage permission is necessary");
alertBuilder.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
public void onClick(DialogInterface dialog, int which) {
ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);
}
});
AlertDialog alert = alertBuilder.create();
alert.show();
} else {
ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);
}
return false;
} else {
return true;
}
}
else {
return true;
}
}
项目:x5webview-cordova-plugin
文件:X5CookieManager.java
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public X5CookieManager(WebView webview) {
webView = webview;
cookieManager = CookieManager.getInstance();
//REALLY? Nobody has seen this UNTIL NOW?
// cookieManager.setAcceptFileSchemeCookies(true);
cookieManager.setAcceptCookie(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
cookieManager.setAcceptThirdPartyCookies(webView, true);
}
}
项目:libRtmp
文件:AndroidUntil.java
@TargetApi(18)
public static AudioRecord getAudioRecord() {
int frequency = Options.getInstance().audio.frequency;
int audioEncoding = Options.getInstance().audio.encoding;
int channelConfiguration = AudioFormat.CHANNEL_CONFIGURATION_MONO;
if(Options.getInstance().audio.channelCount == 2) {
channelConfiguration = AudioFormat.CHANNEL_CONFIGURATION_STEREO;
}
int audioSource = MediaRecorder.AudioSource.MIC;
if(Options.getInstance().audio.aec) {
audioSource = MediaRecorder.AudioSource.VOICE_COMMUNICATION;
}
return new AudioRecord(audioSource, frequency,
channelConfiguration, audioEncoding, getRecordBufferSize());
}
项目:StackCardsView
文件:ChoreographerCompat.java
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
Choreographer.FrameCallback getFrameCallback() {
if (mFrameCallback == null) {
mFrameCallback = new Choreographer.FrameCallback() {
@Override
public void doFrame(long frameTimeNanos) {
FrameCallback.this.doFrame(frameTimeNanos);
}
};
}
return mFrameCallback;
}
项目:cwac-document
文件:DocumentFileCompat.java
/**
* Create a {@link DocumentFileCompat} representing the document tree rooted at
* the given {@link Uri}. This is only useful on devices running
* {@link android.os.Build.VERSION_CODES#LOLLIPOP} or later, and will return
* {@code null} when called on earlier platform versions.
*
* @param treeUri the {@link Intent#getData()} from a successful
* {@link Intent#ACTION_OPEN_DOCUMENT_TREE} request.
*/
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public static DocumentFileCompat fromTreeUri(Context context, Uri treeUri) {
final int version = Build.VERSION.SDK_INT;
if (version >= 21) {
return new TreeDocumentFile(null, context,
DocumentsContractApi21.prepareTreeUri(treeUri));
} else {
return null;
}
}
项目:simple-share-android
文件:SystemBarTintManager.java
/**
* Apply the specified alpha to the system navigation bar.
*
* @param alpha The alpha to use
*/
@TargetApi(11)
public void setNavigationBarAlpha(float alpha) {
if (mNavBarAvailable && Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
mNavBarTintView.setAlpha(alpha);
}
}
项目:FastAndroid
文件:SingleCallActivity.java
@TargetApi(23)
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS:
boolean permissionGranted;
if (mediaType == RongCallCommon.CallMediaType.AUDIO) {
permissionGranted = PermissionCheckUtil.checkPermissions(this, AUDIO_CALL_PERMISSIONS);
} else {
permissionGranted = PermissionCheckUtil.checkPermissions(this, VIDEO_CALL_PERMISSIONS);
}
if (permissionGranted) {
if (startForCheckPermissions) {
startForCheckPermissions = false;
RongCallClient.getInstance().onPermissionGranted();
} else {
setupIntent();
}
} else {
if (startForCheckPermissions) {
startForCheckPermissions = false;
RongCallClient.getInstance().onPermissionDenied();
} else {
finish();
}
}
break;
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
项目:Spyglass
文件:ThrowsThrowable.java
@RequiresApi(21)
@TargetApi(21)
public ThrowsThrowable(
final Context context,
final AttributeSet attrs,
final int defStyleAttr,
final int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
init(attrs, defStyleAttr, defStyleRes);
}
项目:RetroMusicPlayer
文件:TaggerUtils.java
@TargetApi(Build.VERSION_CODES.KITKAT)
private static String getExtSdCardFolder(final File file) {
String[] extSdPaths = getExtSdCardPaths();
try {
for (String extSdPath : extSdPaths) {
if (file.getCanonicalPath().startsWith(extSdPath)) {
return extSdPath;
}
}
} catch (IOException e) {
return null;
}
return null;
}
项目:rongyunDemo
文件:ProgressWheel.java
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) private void setAnimationEnabled() {
int currentApiVersion = Build.VERSION.SDK_INT;
float animationValue;
if (currentApiVersion >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
animationValue = Settings.Global.getFloat(getContext().getContentResolver(),
Settings.Global.ANIMATOR_DURATION_SCALE, 1);
} else {
animationValue = Settings.System.getFloat(getContext().getContentResolver(),
Settings.System.ANIMATOR_DURATION_SCALE, 1);
}
shouldAnimate = animationValue != 0;
}
项目:HandyGridView
文件:HandyGridView.java
@TargetApi(Build.VERSION_CODES.KITKAT)
public void scrollListBy(int deltaY) {
if (SdkVerUtils.isAbove19()) {
super.scrollListBy(deltaY);
} else {
ReflectUtil.invokeMethod(this, "trackMotionScroll", new Object[]{-deltaY, -deltaY}, new Class[]{int.class, int.class});
}
}
项目:bigjpg-app
文件:MainActivity.java
@TargetApi(23)
private boolean checkPermissions() {
if (C.SDK < 23 || checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_GRANTED) {
return true;
}
requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 0);
return false;
}
项目:JD-Test
文件:PercentFrameLayout.java
@RequiresApi(19)
@TargetApi(19)
public LayoutParams(LayoutParams source) {
// The copy constructor used here is only supported on API 19+.
this((FrameLayout.LayoutParams) source);
mPercentLayoutInfo = source.mPercentLayoutInfo;
}
项目:android_ui
文件:CircularNumberPicker.java
/**
*/
@Override
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
public void onInitializeAccessibilityNodeInfo(@NonNull AccessibilityNodeInfo info) {
super.onInitializeAccessibilityNodeInfo(info);
info.setClassName(CircularNumberPicker.class.getName());
}
项目:Saiy-PS
文件:SaiyTextToSpeech.java
/**
* Automatically select the user's default voice.
*
* @param language the {@link Locale} language
* @param region the {@link Locale} region
* @param conditions the {@link SelfAwareConditions}
* @param params the {@link SelfAwareParameters}
*/
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private void setDefaultVoice(@NonNull final String language, @NonNull final String region,
@NonNull final SelfAwareConditions conditions,
@NonNull final SelfAwareParameters params) {
if (DEBUG) {
MyLog.i(CLS_NAME, "setDefaultVoice");
}
final Pair<SaiyVoice, Locale> voicePair = new TTSVoice(language, region, conditions, params, null)
.buildVoice();
if (voicePair.first != null) {
if (DEBUG) {
MyLog.i(CLS_NAME, "setDefaultVoice: Setting Voice: " + voicePair.first.toString());
}
final SaiyVoice saiyVoice = new SaiyVoice(voicePair.first);
saiyVoice.setEngine(getInitialisedEngine());
saiyVoice.setGender(saiyVoice.getName());
final String gsonString = new GsonBuilder().disableHtmlEscaping().create().toJson(saiyVoice);
if (DEBUG) {
MyLog.i(CLS_NAME, "setDefaultVoice: gsonString: " + gsonString);
}
SPH.setDefaultTTSVoice(mContext, gsonString);
} else {
if (DEBUG) {
MyLog.w(CLS_NAME, "setDefaultVoice: Unable to establish a default voice");
}
}
}
项目:egma-shapi
文件:SoundPoolAudioEffectEngine.java
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private SoundPool createSoundPoolLollipop() {
final AudioAttributes audioAttributes = new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_GAME)
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
.build();
return new SoundPool.Builder()
.setAudioAttributes(audioAttributes)
.setMaxStreams(4)
.build();
}
项目:igrow-android
文件:BluetoothLeScanL21Proxy.java
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
public void startLeScan() {
List<ScanFilter> filters = new ArrayList<ScanFilter>();
ScanFilter filter = new ScanFilter.Builder().build();
filters.add(filter);
ScanSettings settings = new ScanSettings.Builder().setScanMode(SCAN_MODE_LOW_LATENCY)
.build();
mBluetoothLeScanner.startScan(filters, settings, mLeScanCallback);
}
项目:android_ui
文件:WebViewWidget.java
/**
*/
@Override
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
public void onInitializeAccessibilityEvent(@NonNull AccessibilityEvent event) {
super.onInitializeAccessibilityEvent(event);
event.setClassName(WebViewWidget.class.getName());
}
项目:android_ui
文件:FrameLayoutWidget.java
/**
*/
@Override
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
public void onInitializeAccessibilityNodeInfo(@NonNull AccessibilityNodeInfo info) {
super.onInitializeAccessibilityNodeInfo(info);
info.setClassName(FrameLayoutWidget.class.getName());
}