diff --git a/.gitignore b/.gitignore index 81dbb8a..1645c22 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,4 @@ build .gradle local.properties -**/gradle.properties \ No newline at end of file +**/gradle.properties diff --git a/README.md b/README.md index 6814cbb..bae522e 100644 --- a/README.md +++ b/README.md @@ -70,4 +70,4 @@ LICENSE 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. -
\ No newline at end of file +
diff --git a/ShortcutBadger/build.gradle b/ShortcutBadger/build.gradle index 86c2606..8f3fe7b 100644 --- a/ShortcutBadger/build.gradle +++ b/ShortcutBadger/build.gradle @@ -1,4 +1,5 @@ apply plugin: 'com.android.library' + android { compileSdkVersion 19 diff --git a/ShortcutBadger/src/main/AndroidManifest.xml b/ShortcutBadger/src/main/AndroidManifest.xml index f1b48fd..c1ddd27 100644 --- a/ShortcutBadger/src/main/AndroidManifest.xml +++ b/ShortcutBadger/src/main/AndroidManifest.xml @@ -23,4 +23,7 @@ + + + diff --git a/ShortcutBadger/src/main/java/me/leolin/shortcutbadger/ShortcutBadger.java b/ShortcutBadger/src/main/java/me/leolin/shortcutbadger/ShortcutBadger.java index c51ad78..62d4274 100644 --- a/ShortcutBadger/src/main/java/me/leolin/shortcutbadger/ShortcutBadger.java +++ b/ShortcutBadger/src/main/java/me/leolin/shortcutbadger/ShortcutBadger.java @@ -31,6 +31,7 @@ public abstract class ShortcutBadger { private static final String HOME_PACKAGE_ANDROID1 = "com.android.launcher"; private static final String HOME_PACKAGE_ANDROID2 = "com.android.launcher2"; private static final String HOME_PACKAGE_ANDROID3 = "com.google.android.googlequicksearchbox"; + private static final String HOME_PACKAGE_SOLID = "com.majeur.launcher"; private static final String MESSAGE_NOT_SUPPORT_BADGE_COUNT = "ShortBadger is currently not support the badgeCount \"%d\""; @@ -78,7 +79,6 @@ public static void setBadge(Context context, int badgeCount) throws ShortcutBadg } catch (Throwable e) { throw new ShortcutBadgeException("Unable to execute badge:" + e.getMessage()); } - shortcutBadger.executeBadge(badgeCount); } @@ -117,6 +117,8 @@ private static ShortcutBadger getShortcutBadger(String currentHomePackage, Conte sShortcutBadger = new AdwHomeBadger(context); } else if (HOME_PACKAGE_NOVA.equals(currentHomePackage)) { sShortcutBadger = new NovaHomeBadger(context); + } else if (HOME_PACKAGE_SOLID.equals(currentHomePackage)) { + sShortcutBadger = new SolidHomeBadger(context); } diff --git a/ShortcutBadger/src/main/java/me/leolin/shortcutbadger/impl/SamsungHomeBadger.java b/ShortcutBadger/src/main/java/me/leolin/shortcutbadger/impl/SamsungHomeBadger.java index ea9f2c5..aa79d45 100644 --- a/ShortcutBadger/src/main/java/me/leolin/shortcutbadger/impl/SamsungHomeBadger.java +++ b/ShortcutBadger/src/main/java/me/leolin/shortcutbadger/impl/SamsungHomeBadger.java @@ -30,11 +30,11 @@ protected void executeBadge(int badgeCount) throws ShortcutBadgeException { if (cursor != null) { while (cursor.moveToNext()) { int id = cursor.getInt(0); - ContentValues contentValues = getContentValues(badgeCount); + ContentValues contentValues = getContentValues(badgeCount, false); contentResolver.update(mUri, contentValues, "_id=?", new String[]{String.valueOf(id)}); } } else { - ContentValues contentValues = getContentValues(badgeCount); + ContentValues contentValues = getContentValues(badgeCount, true); contentResolver.insert(mUri, contentValues); } } finally { @@ -42,11 +42,15 @@ protected void executeBadge(int badgeCount) throws ShortcutBadgeException { } } - private ContentValues getContentValues(int badgeCount) { + private ContentValues getContentValues(int badgeCount, boolean isInsert) { ContentValues contentValues = new ContentValues(); - contentValues.put("package", getContextPackageName()); - contentValues.put("class", getEntryActivityName()); + if (isInsert) { + contentValues.put("package", getContextPackageName()); + contentValues.put("class", getEntryActivityName()); + } + contentValues.put("badgecount", badgeCount); + return contentValues; } } diff --git a/ShortcutBadger/src/main/java/me/leolin/shortcutbadger/impl/SolidHomeBadger.java b/ShortcutBadger/src/main/java/me/leolin/shortcutbadger/impl/SolidHomeBadger.java new file mode 100644 index 0000000..bdc2338 --- /dev/null +++ b/ShortcutBadger/src/main/java/me/leolin/shortcutbadger/impl/SolidHomeBadger.java @@ -0,0 +1,31 @@ +package me.leolin.shortcutbadger.impl; + +import android.content.Context; +import android.content.Intent; + +import me.leolin.shortcutbadger.ShortcutBadgeException; +import me.leolin.shortcutbadger.ShortcutBadger; + +/** + * @author MajeurAndroid + */ +public class SolidHomeBadger extends ShortcutBadger { + + private static final String INTENT_UPDATE_COUNTER = "com.majeur.launcher.intent.action.UPDATE_BADGE"; + private static final String PACKAGENAME = "com.majeur.launcher.intent.extra.BADGE_PACKAGE"; + private static final String COUNT = "com.majeur.launcher.intent.extra.BADGE_COUNT"; + private static final String CLASS = "com.majeur.launcher.intent.extra.BADGE_CLASS"; + + public SolidHomeBadger(Context context) { + super(context); + } + + @Override + protected void executeBadge(int badgeCount) throws ShortcutBadgeException { + Intent intent = new Intent(INTENT_UPDATE_COUNTER); + intent.putExtra(PACKAGENAME, getContextPackageName()); + intent.putExtra(COUNT, badgeCount); + intent.putExtra(CLASS, getEntryActivityName()); + mContext.sendBroadcast(intent); + } +} diff --git a/ShortcutBadger/src/main/java/me/leolin/shortcutbadger/util/ImageUtil.java b/ShortcutBadger/src/main/java/me/leolin/shortcutbadger/util/ImageUtil.java index ba822e3..8c67d04 100644 --- a/ShortcutBadger/src/main/java/me/leolin/shortcutbadger/util/ImageUtil.java +++ b/ShortcutBadger/src/main/java/me/leolin/shortcutbadger/util/ImageUtil.java @@ -1,13 +1,12 @@ package me.leolin.shortcutbadger.util; import android.content.Context; -import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; import android.graphics.*; import android.graphics.drawable.Drawable; import me.leolin.shortcutbadger.ShortcutBadgeException; import java.io.ByteArrayOutputStream; -import java.util.List; /** * Created with IntelliJ IDEA. @@ -41,19 +40,18 @@ public static byte[] bitmapToByteArray(Bitmap bitmap) { public static byte[] drawBadgeOnAppIcon(Context context, int badgeCount) throws ShortcutBadgeException { - Bitmap appIcon = null; + Bitmap appIcon; String gText = String.valueOf(badgeCount); - List packages = context.getPackageManager().getInstalledPackages(0); - for (PackageInfo packageInfo : packages) { - if (context.getPackageName().equals(packageInfo.packageName)) { - Drawable drawable = packageInfo.applicationInfo.loadIcon(context.getPackageManager()); - appIcon = drawableToBitmap(drawable); - } + try { + Drawable iconDrawable = context.getPackageManager().getApplicationIcon(context.getPackageName()); + appIcon = drawableToBitmap(iconDrawable); + } catch (PackageManager.NameNotFoundException e) { + throw new ShortcutBadgeException("Could not load the app Icon"); } if (appIcon == null) { - throw new ShortcutBadgeException("count not load the app Icon"); + throw new ShortcutBadgeException("Could not load the app Icon"); } if (badgeCount == 0) { @@ -78,38 +76,31 @@ public static byte[] drawBadgeOnAppIcon(Context context, int badgeCount) throws float cx = appIcon.getWidth() - radius; float cy = radius; - - Paint paint_red = new Paint(); - paint_red.setColor(Color.RED); - Paint paint_white = new Paint(); - paint_white.setColor(Color.WHITE); Canvas canvas = new Canvas(appIcon); - canvas.drawCircle(cx, cy, radius, paint_white); - - - canvas.drawCircle(cx, cy, radius * 6 / 7, paint_red); - - - // new antialised Paint - Paint paint_text = new Paint(Paint.ANTI_ALIAS_FLAG); - // text color - #3D3D3D - paint_text.setColor(Color.WHITE); + //ANTI_ALIAS to avoid glitched circles + Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); + paint.setColor(Color.WHITE); + canvas.drawCircle(cx, cy, radius, paint); + paint.setColor(Color.RED); + canvas.drawCircle(cx, cy, radius * 6 / 7, paint); + + paint.setColor(Color.WHITE); // text size in pixels - int textSize = (int)(radius*0.7); + int textSize = (int) (radius * 0.7); if (gText.length() > 1) { - textSize = (int)(radius*0.5); + textSize = (int) (radius * 0.5); } - paint_text.setTextSize((int) (textSize * scale)); - paint_text.setFakeBoldText(true); + paint.setTextSize((int) (textSize * scale)); + paint.setFakeBoldText(true); // draw text to the Canvas center Rect bounds = new Rect(); - paint_text.getTextBounds(gText, 0, gText.length(), bounds); + paint.getTextBounds(gText, 0, gText.length(), bounds); float bw = bounds.width() / 2; if (gText.endsWith("1")) { bw *= 1.25; } float bh = bounds.height() / 2; - canvas.drawText(gText, cx - bw, cy + bh, paint_text); + canvas.drawText(gText, cx - bw, cy + bh, paint); return bitmapToByteArray(appIcon); } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index bdbd9f4..58e9892 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,4 +1,4 @@ -#Wed Mar 04 10:08:25 CST 2015 +#Thu Mar 12 21:22:24 CST 2015 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME