2015年12月29日 星期二

[Android] Launcher Icon bage Number


今天試著把launcher icon 加了數字提示,找到一篇可以用的,

在我的LG手機上測試正常


程式碼


import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import java.util.List;


public class MainActivity extends ActionBarActivity {

    int count=0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button sent=(Button)findViewById(R.id.set);
        Button reset=(Button)findViewById(R.id.reset);
        final TextView text=(TextView)findViewById(R.id.textView);

        sent.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                text.setText(String.valueOf(++count));
                setBadge(MainActivity.this,count);
            }
        });

        reset.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                text.setText("0");
                count=0;
                setBadge(MainActivity.this,count);
            }
        });

    }

    public static void setBadge(Context context, int count) {
        String launcherClassName = getLauncherClassName(context);
        if (launcherClassName == null) {
            return;
        }
        Intent intent = new Intent("android.intent.action.BADGE_COUNT_UPDATE");
        intent.putExtra("badge_count", count);
        intent.putExtra("badge_count_package_name", context.getPackageName());
        intent.putExtra("badge_count_class_name", launcherClassName);
        context.sendBroadcast(intent);
    }

    public static String getLauncherClassName(Context context) {

        PackageManager pm = context.getPackageManager();

        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);

        List<ResolveInfo> resolveInfos = pm.queryIntentActivities(intent, 0);
        for (ResolveInfo resolveInfo : resolveInfos) {
            String pkgName = resolveInfo.activityInfo.applicationInfo.packageName;
            if (pkgName.equalsIgnoreCase(context.getPackageName())) {
                String className = resolveInfo.activityInfo.name;
                return className;
            }
        }
        return null;
    }
}

Layout

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    >

    <TextView
        android:text="@string/hello_world"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textView" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Set Bage"
        android:id="@+id/set"
        android:layout_below="@+id/textView"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Reset Bage"
        android:id="@+id/reset"
        android:layout_below="@+id/set"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" />

</RelativeLayout>

執行結果



參考連結中的第二篇有提到一點要注意。

注意launcherClassName 必須被設定成   

android.intent.category.LAUNCHER

參考資料:

http://stackoverflow.com/questions/17565307/how-to-display-count-of-notifications-in-app-launcher-icon

http://my.oschina.net/ososchina/blog/352286

[分享]STOP:0X0000000BE

今天遇到一台電腦只要一插上USB(連接相機),就出現藍底白字0X000000BE,

查詢網上前輩們的分享,的確是有新的裝置,或是安裝了驅動造成的問題。



























另一個東西引起我的注意,Fortishield.sys ,網路上查詢,這是一套免費的防毒FortiClient

的檔案,心中想該不會是防毒要掃描USB出了錯。


重開機後,發現了奇慢無比的電腦,接下來第一個跳出來的就是對岸的衛士360啦,

有沒有搞錯,同時裝2套防毒,移除360後,重開機,接上相機,一切正常。


參考資料:



https://www.360totalsecurity.com/zh-tw/about/

http://www.forticlient.com/

2015年12月26日 星期六

[好軟體] AvaCam

之前在找一個可以拿webcam做縮時攝影的程式時找到的,


目前在win10使用上連拍6天都沒有問題,而且它可以做定時拍照的設定。


支援的OS:

Win 9x/ME/2000/XP/2003/Vista/7


主畫面




















連接好Webcam後,按下右下角的Start即可開始拍照



左半邊這邊是可以選擇三種拍攝模式


1.Manual ,也就是自己按下SnapShut才會拍下來。

2.Motionsave ,也就是有移動的物體時會自己拍照。

3.Autosave ,也就是定時拍照,秒數由2~3600秒。





















要看目前己拍攝的照片,可以點選左邊的Open/View。


















拍出來的照片分成4種類型,左上角可以選擇

1.Snapshots 就是手動按下Snapshot所拍的。

2.AutoSave 則是定時拍攝的照片。

3.Videos 則是影片。

4.MotionSave 則是偵測到移動所拍下來的照片。

下載網址:

http://www.freewarefiles.com/RGS-AvaCam_program_23445.html

「Android」android畫面同步到PC,使用Vysor

Vysor 是一個Chrome的應用程式,只要將Android裝置

開發者模式中的USB  Debug打開,一插上android,會自動安裝一個Vysor App

進到裝置中,之後就就可以開始同步或用滑鼠點擊操作手機/平板。

windows 我沒有成功連接過,但是MAC是可以的,只是有時候會趴袋,不會自己

啟動同步畫面,重開機或重啟ADB試試。


對囉,它也可以分享畫面用browser遠端操作。

唯一的缺點是我覺得它畫面的畫質沒有很優丫,雖然操作起來算順暢了。


詳細內容可以參考這一篇簡介,中文滴。

http://www.techbang.com/posts/25777-simple-steps-vysor-let-you-control-android-devices-on-your-computer-you-can-also-remote-control


參考網址:

http://steachs.com/archives/15646

「分享」18F47J53 PID 與VID

18f47j53 這顆MCU 有二組PID與VID,

boot-loader  mode
"Vid_04d8&Pid_003c"

applaction  mode
 "Vid_C251&Pid_1303"


boot-loader mode是進入一個boot-loader ,就類似一個簡易的

開機程式,讓我們可以更新Firmware。

applaction mode 的PID 也許會不一樣。

[Arduino] MAX 7219 模組

不多說,照片先來一張模組的照片,這個模組

搭配一顆Max7219 IC以及8*8 LED 矩陣,可以大大簡化我們對16支

腳位的控制,只要將編碼好的值寫入即可。














首先先接一下線,版子上面有5支腳


模組             Arduino
VCC    ---> VCC
GND   ---> GND
DIN     ----> Digital 8
CS       ---> Digital 9
CLK     ----> Digital 10



unsigned char i;
unsigned char j; 
 
int Max7219_pinCLK = 10;
int Max7219_pinCS = 9;
int Max7219_pinDIN = 8;


unsigned char disp2[6][8]={
  0x00,0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x00,  // L
  0x00,0x38, 0x10, 0x10, 0x10, 0x10, 0x38, 0x00,  // I
  0x00,0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x00,  // L
  0x00,0x38, 0x10, 0x10, 0x10, 0x10, 0x38, 0x00,  // I
  0x00,0x18, 0x24, 0x24, 0x24, 0x3C, 0x24, 0x00,  // A
  0x00,0x32, 0x2A, 0x26, 0x22, 0x22, 0x22, 0x00,  // N
};

 
void Write_Max7219_byte(unsigned char DATA) 
{   
  unsigned char i;
  digitalWrite(Max7219_pinCS,LOW);  
  for(i=8;i>=1;i--)
  {    
    digitalWrite(Max7219_pinCLK,LOW);
    digitalWrite(Max7219_pinDIN,DATA&0x80);
    DATA = DATA<<1;
    digitalWrite(Max7219_pinCLK,HIGH);
  }                                 
}
 
void Write_Max7219(unsigned char address,unsigned char dat)
{
  digitalWrite(Max7219_pinCS,LOW);
  Write_Max7219_byte(address);          
  Write_Max7219_byte(dat);               
  digitalWrite(Max7219_pinCS,HIGH);
}
 
void Init_MAX7219(void)
{
  Write_Max7219(0x09, 0x00);      
  Write_Max7219(0x0a, 0x03);      
  Write_Max7219(0x0b, 0x07);       
  Write_Max7219(0x0c, 0x01);      
  Write_Max7219(0x0f, 0x00);      
}
 
void setup()
{
 
  pinMode(Max7219_pinCLK,OUTPUT);
  pinMode(Max7219_pinCS,OUTPUT);
  pinMode(Max7219_pinDIN,OUTPUT);
  delay(50);
  Init_MAX7219();
}
 
void loop()
{ 
  for(j=0;j<6;j++)
  {
    for(i=1;i<9;i++)
      Write_Max7219(i,disp2[j][i-1]);
    delay(1000);
  }   
}

這樣子就會連續的顯示

L  ->  I  -> L ->  I  ->  A  -> N


程式碼來源:

http://www.electroschematics.com/10510/arduino-8-8-led-matrix/

[名詞定義] DMX512

DMX512 (Digital Multiplex)


DMX512協議最先是由USITT(美國劇院技術協會)發展成為從控制臺用標準數 位元接頭控制

調光器的方式,用來控制兩個戲劇舞臺燈光及效果。


它的電氣特性(根據EIA/TIA-485標準),也就是俗稱的RS-485 ,但是它的傳輸速度規定

250K bps,不可以切換鮑率(Baud Rate)


DMX 512 每次發送512 byte 的資料,每一個byte能夠表示0~255值。

值的定義由接收到的裝置決定。


 The protocol can handle up to 512 devices in a DMX network and communicates at 250 kbps baud rate. Each bit in the frame is generated every 4us.


DMX512 它是持續發送目前狀態的做法,假設你把Address 1 調成255,那每次

會發送 255,0,0,0,0,0,...............,0   出去,1秒內會送個幾10次目前狀態的資料。


DMX512 是一個單向的協定,只能傳輸資料,無法接收,而且它是採取


每一個裝置上可以設定Start Address ,至於每個裝置佔用了幾個Address,

要看裝置本身的設計,例如我有一個燈具,我設定它的Start Address 為8 ,

它佔用了3個Address,則第8個byte~ 第10個byte送的資料,可以去操作這

台燈具的功能。若我有另一台相同燈具Start Address也設8 , 則可以一起接受

控制,若第3台相同燈具我設Start Address為11,則不會與前2台一起作動。


由控制器接出來的線接到第一台燈具,再由第一台燈具的OUT接到第二台燈具,

以此類推,一直接下去。







圖片連結來源-維基百科


連接線有3種格式

XLR 5 pin

XLR 3 ping

RJ45



2015年12月23日 星期三

[賣摳Soft] 錯誤代碼 0X80070052

今天在公司,要把桌機做縮時攝影的檔案(縮了一週,超多照片),


要複制到USB結果出現


0X80070052: 無法建立目錄或檔案

試了2次都一樣,確認了檔案也是正常的,USB空間也還有2G,怎麼會COPY

不過去呢,後來試著把還沒複制過去的檔案,複制到上一層目錄 "非常正常"

所以推測是檔案數量問題,上網爬文了一下。



FAT32

  • Maximum disk size: 2 terabytes
  • Maximum file size: 4 gigabytes
  • Maximum number of files on disk: 268,435,437
  • Maximum number of files in a single folder: 65,534


下方最後一篇是這樣寫的:

FAT32的單一資料夾,最多只能容納1000個檔案,整個磁碟總共可容納268,435,437個檔案,同時單一檔案大小不可超過4GB。


除非真的非不得己,還是好好的整理一下檔案,分門別類吧。


資料來源:

https://technet.microsoft.com/library/Cc938937

http://www.skybook.tw/2015/05/APP-6141/

http://superuser.com/questions/446282/max-files-per-directory-on-ntfs-vol-vs-fat32

http://ithelp.ithome.com.tw/question/10002297

[名詞定義] 假陰 & 陰陽

假陰

大便味的咖哩

-->雖然味道是大便味,但咖哩就是咖哩。


假陽

咖哩味的大便。

-->雖然味道像咖哩,可是他還是大便。

2015年12月14日 星期一

[智語] 衛生紙

衛生紙之所以偉大,是因為它甘願奉獻出自己,讓我們脫身





原文網址: 沒帶衛生紙衝進廁所 邱子容寫糗事基測作文拿滿分 | ETtoday生活新聞 | ETtoday 新聞雲 http://www.ettoday.net/news/20120621/62434.htm#ixzz3uJ2juD8w 
Follow us: @ETtodaynet on Twitter | ETtoday on Facebook

[Java] Java Read EXIF

Java 讀取數位相片EXIF檔的程式碼
package exif;


import com.drew.imaging.jpeg.JpegMetadataReader;
import com.drew.imaging.jpeg.JpegProcessingException;
import com.drew.metadata.Directory;
import com.drew.metadata.Metadata;
import com.drew.metadata.Tag;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author flowercatswets
 */
public class Exif {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        File jpegFile = new File("/Users/flowercatswets/Desktop/test/P1080033.JPG");  
    
    Metadata metadata = null;  
        try {
            metadata = JpegMetadataReader.readMetadata(jpegFile);
            print(metadata);
        } catch (JpegProcessingException ex) {
            Logger.getLogger(Exif.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(Exif.class.getName()).log(Level.SEVERE, null, ex);
        }
        
    }
    
     private static void print(Metadata metadata)
    {
        System.out.println("-------------------------------------");

      
        for (Directory directory : metadata.getDirectories()) {

          
            for (Tag tag : directory.getTags()) {
                System.out.println(tag);
                
               // String tagName= tag.getTagName();
                //String tagDes=tag.getDescription();
                
            }

            //
            // Each Directory may also contain error messages
            //
            if (directory.hasErrors()) {
                for (String error : directory.getErrors()) {
                    System.err.println("ERROR: " + error);
                }
            }
        }
    }
    
}


但是要先去拉一個專案的code下來

https://github.com/drewnoakes/metadata-extractor

Netbean滙不進這一個專案,所以我把裡面的Source資料夾下的程式碼COPY到

專案中,讓import可以正常,接下來找一張相片。

執行一下輸出結果

-------------------------------------
[JPEG] Compression Type - Baseline
[JPEG] Data Precision - 8 bits
[JPEG] Image Height - 3000 pixels
[JPEG] Image Width - 4000 pixels
[JPEG] Number of Components - 3
[JPEG] Component 1 - Y component: Quantization table 0, Sampling factors 1 horiz/1 vert
[JPEG] Component 2 - Cb component: Quantization table 1, Sampling factors 1 horiz/1 vert
[JPEG] Component 3 - Cr component: Quantization table 1, Sampling factors 1 horiz/1 vert
[JFIF] Version - 1.1
[JFIF] Resolution Units - none
[JFIF] X Resolution - 1 dot
[JFIF] Y Resolution - 1 dot
[JFIF] Thumbnail Width Pixels - 0
[JFIF] Thumbnail Height Pixels - 0
[Exif IFD0] Make - Panasonic
[Exif IFD0] Model - DMC-GF2
[Exif IFD0] Orientation - Top, left side (Horizontal / normal)
[Exif IFD0] Software - iPhoto 9.5.1
[Exif IFD0] Date/Time - 2014:07:13 16:31:27
[Exif SubIFD] Exposure Time - 1/400 sec
[Exif SubIFD] F-Number - f/10.0
[Exif SubIFD] Exposure Program - Program normal
[Exif SubIFD] ISO Speed Ratings - 100
[Exif SubIFD] Exif Version - 2.30
[Exif SubIFD] Date/Time Original - 2014:07:13 16:31:27
[Exif SubIFD] Date/Time Digitized - 2014:07:13 16:31:27
[Exif SubIFD] Components Configuration - YCbCr
[Exif SubIFD] Compressed Bits Per Pixel - 2 bits/pixel
[Exif SubIFD] Exposure Bias Value - 0 EV
[Exif SubIFD] Max Aperture Value - f/5.6
[Exif SubIFD] Metering Mode - Multi-segment
[Exif SubIFD] White Balance - Unknown
[Exif SubIFD] Flash - Flash did not fire, auto
[Exif SubIFD] Focal Length - 42 mm
[Exif SubIFD] FlashPix Version - 1.00
[Exif SubIFD] Color Space - sRGB
[Exif SubIFD] Exif Image Width - 4000 pixels
[Exif SubIFD] Exif Image Height - 3000 pixels
[Exif SubIFD] Sensing Method - One-chip color area sensor
[Exif SubIFD] File Source - Digital Still Camera (DSC)
[Exif SubIFD] Scene Type - Directly photographed image
[Exif SubIFD] Custom Rendered - Normal process
[Exif SubIFD] Exposure Mode - Auto exposure
[Exif SubIFD] White Balance Mode - Auto white balance
[Exif SubIFD] Digital Zoom Ratio - Digital zoom not used
[Exif SubIFD] Focal Length 35 - 84 mm
[Exif SubIFD] Scene Capture Type - Standard
[Exif SubIFD] Gain Control - None
[Exif SubIFD] Contrast - None
[Exif SubIFD] Saturation - None
[Exif SubIFD] Sharpness - None
[Xmp] XMP Value Count - 8
[Xmp] Lens - LUMIX G VARIO 14-42/F3.5-5.6  
[Xmp] Serial Number - F931109140259
[ICC Profile] Profile Size - 560
[ICC Profile] CMM Type - ADBE
[ICC Profile] Version - 2.1.0
[ICC Profile] Class - Display Device
[ICC Profile] Color space - RGB
[ICC Profile] Profile Connection Space - XYZ
[ICC Profile] Profile Date/Time - 星期六 八月 12 03:51:59 +08:00 2000
[ICC Profile] Signature - acsp
[ICC Profile] Primary Platform - Apple Computer, Inc.
[ICC Profile] Device manufacturer - none
[ICC Profile] XYZ values - 0.964 1 0.825
[ICC Profile] Tag Count - 10
[ICC Profile] Copyright - Copyright 2000 Adobe Systems Incorporated
[ICC Profile] Profile Description - Adobe RGB (1998)
[ICC Profile] Media White Point - (0.9505, 1, 1.0891)
[ICC Profile] Media Black Point - (0, 0, 0)
[ICC Profile] Red TRC - 0.0085908
[ICC Profile] Green TRC - 0.0085908
[ICC Profile] Blue TRC - 0.0085908
[ICC Profile] Red Colorant - (0.6097, 0.3111, 0.0195)
[ICC Profile] Green Colorant - (0.2053, 0.6257, 0.0609)
[ICC Profile] Blue Colorant - (0.1492, 0.0632, 0.7446)
[Photoshop] Caption Digest - 30 46 141 110 6 218 48 251 230 96 58 140 160 40 46 157
[IPTC] Coded Character Set - UTF-8
[IPTC] Application Record Version - 2
[IPTC] Digital Time Created - 16:31:27
[IPTC] Digital Date Created - 星期日 七月 13 00:00:00 +08:00 2014
[IPTC] Special Instructions - jyVgAHzDQNCOpuAZrUdFnQ
[IPTC] Date Created - 星期日 七月 13 00:00:00 +08:00 2014
[IPTC] Time Created - 16:31:27
[File] File Name - P1060712.JPG
[File] File Size - 9306586 bytes
[File] File Modified Date - 星期二 七月 15 23:28:01 +08:00 2014

參考資料來源:

https://github.com/drewnoakes/metadata-extractor

[名詞定義] TTL

TTL全名是 Through The Lens ,意思為"通過鏡頭"。

在還沒有有 TTL 之前,相機測光主要靠機身外的 Cds (Cadmium-Sulfide 硫化鎘光敏電阻),

容易受環境光影響,未能反映光線經過多層鏡片或加上濾鏡時出現的光量損失,

會造成曝光不足。

而 TTL 的測光元件則設於機身內部,約為鏡頭後接近底片的位置。由於是測量通過鏡頭

後的光線,所以 TTL 的準確度比機身外測光更為優秀。


參考來源: 

http://www.dcfever.com/news/readnews.php?id=3003

[名詞定義] EXIF

EXIF 是Exchangeable Image File的縮寫 , 這是一種專門為數位相機照片設定的格式。

這種格式可以用來記錄數位相片的屬性資訊,例如相機的品牌及型號、相片的拍攝時間、

拍攝時所設置 的光圈大小、快門速度、ISO等等資訊。除此之外它還能夠記錄拍攝資料,

以及照片格式化方式。



資料來源:

http://myblog-maurice.blogspot.tw/2011/11/javaexif.html

2015年12月12日 星期六

[Mac] Thunderbolt Ethernet in win 10

Thunderbolt Ethernet 在win10上熱拔插可能不會被偵測到。

26.Are Thunderbolt devices “hot pluggable” using Windows with Boot Camp?

The iMac (Retina 5K, 27-inch, Late 2014) and the Mac mini (Late 2014) support “hot pluggable” Thunderbolt devices using Windows 8 or 8.1 (both as 64-bit only).

For all other Mac computers, Windows 7, 8, and 8.1 scans and activates Thunderbolt devices connected to Thunderbolt ports only during the Windows startup process. If your device was not plugged in at start up, Windows will not detect it without a restart.


如果發生Thunderbolt Ethernet 找不到的情況,可以先考慮插著,然候重新啟動windows 10,或許可以解決這個問題。


資料來源:

http://forums.macrumors.com/threads/thunderbolt-hotplug-on-windows-10.1819920/

2015年12月5日 星期六

[Android] 用程式碼模擬被按下的效果

首先產生一個MoctionEvent


MotionEvent event = MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(),
MotionEvent.ACTION_DOWN, mView.getLeft() + 5, mView.getTop() + 5, 0);

接著把它丟給要被"摸"的View

view.dispatchTouchEvent(event);

參考網址

http://blog.csdn.net/aminfo/article/details/7887964

[android] zenpad 開發上遇到的問題

最近拿到公司新買的zen pad 8 ,用eclipse把APP傳上去時,出現了以下錯誤訊息
java.lang.UnsatisfiedLinkError: No implementation found for java.lang.Stringandroid.os.SystemProperties.native_get(java.lang.String, java.lang.String) (tried Java_android_os_SystemProperties_native_1get and Java_android_os_SystemProperties_native_1get__Ljava_lang_String_2Ljava_lang_String_2)

試了幾次都一樣,問了在華碩工作的朋友,這問題他們也遇到過,zenphone 2系列也會,

多試幾次,雖然無法啟動APP,但其實有安裝進去裝置裡,可以用手去點擊icon啟動APP。