/*
* Copyright 2013 wada811<at.wada811@gmail.com>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package at.wada811.utils;
import android.app.Activity;
import android.app.Service;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.graphics.Bitmap;
import android.os.Build;
import android.view.Gravity;
import android.view.ViewGroup.LayoutParams;
import android.widget.ImageView;
import android.widget.Toast;
public class AndroidUtils {
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
// Android Build Version 判定
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
/**
* Android OS バージョンが指定のバージョン以上の場合は true
*
* @param versionCode
* @return
*/
public static boolean isMoreThanBuildVersion(int versionCode){
return Build.VERSION.SDK_INT >= versionCode;
}
/**
* Android OS バージョンが指定のバージョン未満の場合は true
*
* @param versionCode
* @return
*/
public static boolean isLessThanBuildVersion(int version_code){
return Build.VERSION.SDK_INT < version_code;
}
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
// Application Meta Info
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
/**
* バージョンコードを取得する
*
* @param context
* @return
*/
public static int getVersionCode(Context context){
PackageManager pm = context.getPackageManager();
int versionCode = 0;
try{
PackageInfo packageInfo = pm.getPackageInfo(context.getPackageName(), 0);
versionCode = packageInfo.versionCode;
}catch(NameNotFoundException e){
e.printStackTrace();
}
return versionCode;
}
/**
* バージョン名を取得する
*
* @param context
* @return
*/
public static String getVersionName(Context context){
PackageManager pm = context.getPackageManager();
String versionName = "";
try{
PackageInfo packageInfo = pm.getPackageInfo(context.getPackageName(), 0);
versionName = packageInfo.versionName;
}catch(NameNotFoundException e){
e.printStackTrace();
}
return versionName;
}
public static boolean isDebug(Context context){
PackageManager pm = context.getPackageManager();
try{
ApplicationInfo applicationInfo = pm.getApplicationInfo(context.getPackageName(), 0);
return (applicationInfo.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0;
}catch(NameNotFoundException e){
e.printStackTrace();
}
return false;
}
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
// Toast 表示
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
/**
* Toastを表示する
*
* @param context
* @param message
*/
public static void showToast(final Context context, final String message){
if(ThreadUtils.isMainThread()){
Toast.makeText(context, message, Toast.LENGTH_LONG).show();
}else{
if(context instanceof Service){
// Handler で表示する
//
// public class HandlerService extends Service {
//
// Handler handler;
//
// @Override
// public void onCreate() {
// super.onCreate();
// handler = new Handler();
// }
//
// private void runOnUiThread(Runnable runnable) {
// handler.post(runnable);
// }
//
// }
throw new RuntimeException("Cannot show Toast in Service.");
}else if(context instanceof Activity){
((Activity)context).runOnUiThread(new Runnable(){
@Override
public void run(){
Toast.makeText(context, message, Toast.LENGTH_LONG).show();
}
});
}
}
}
/**
* Toastを表示する
*
* @param context
* @param resId
*/
public static void showToast(final Context context, final int resId){
if(ThreadUtils.isMainThread()){
Toast.makeText(context, resId, Toast.LENGTH_LONG).show();
}else{
if(context instanceof Service){
// Handler で表示する
//
// public class HandlerService extends Service {
//
// Handler handler;
//
// @Override
// public void onCreate() {
// super.onCreate();
// handler = new Handler();
// }
//
// private void runOnUiThread(Runnable runnable) {
// handler.post(runnable);
// }
//
// }
throw new RuntimeException("Cannot show Toast in Service.");
}else if(context instanceof Activity){
((Activity)context).runOnUiThread(new Runnable(){
@Override
public void run(){
Toast.makeText(context, resId, Toast.LENGTH_LONG).show();
}
});
}
}
}
/**
* Toastを表示する
*
* @param context
* @param bitmap
*/
public static void showToast(final Context context, final Bitmap bitmap){
if(ThreadUtils.isMainThread()){
Toast toast = new Toast(context);
ImageView image = new ImageView(context);
image.setImageBitmap(bitmap);
image.setLayoutParams(new LayoutParams(bitmap.getWidth(), bitmap.getHeight()));
toast.setView(image);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.setDuration(Toast.LENGTH_SHORT);
toast.show();
}else{
if(context instanceof Service){
// Handler で表示する
//
// public class HandlerService extends Service {
//
// Handler handler;
//
// @Override
// public void onCreate() {
// super.onCreate();
// handler = new Handler();
// }
//
// private void runOnUiThread(Runnable runnable) {
// handler.post(runnable);
// }
//
// }
throw new RuntimeException("Cannot show Toast in Service.");
}else if(context instanceof Activity){
((Activity)context).runOnUiThread(new Runnable(){
@Override
public void run(){
Toast toast = new Toast(context);
ImageView image = new ImageView(context);
image.setImageBitmap(bitmap);
image.setLayoutParams(new LayoutParams(bitmap.getWidth(), bitmap.getHeight()));
toast.setView(image);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.setDuration(Toast.LENGTH_SHORT);
toast.show();
}
});
}
}
}
}