2016年12月8日 星期四

無線電傳輸功率計算


傳輸損耗(dB) = 32.45 + 20Log工作頻率(MHz) + 20Log天線收發距離(km)
傳輸損耗(dB) = 10 Log(發射功率/接收功率)

[Java] 使用 Java SDK 手動編譯程式碼

示範使用 JDK 編譯 Java 程式碼。

2016年10月4日 星期二

安裝 GNU Embedded Toolchain 和 CooCox

最近多家 IC 廠改寫 Eclipse 或使用免費又開放原始碼的 CooCox 作為 IC 程式開發工具。

這篇僅簡單安裝測試 CooCox 這款 IDE。

2016年8月24日 星期三

[OpenOffice][Calc] 縮印整頁內容

在 OpenOffice Calc (類似 Excal) 中,自動縮印整頁資料到一張列印紙的範圍大小。

2016年8月23日 星期二

[Unity][Android] 自製 Unity Bluetooth Low Energy 4.0 Plugin 紀錄

程式碼參閱 Google android-BluetoothLeGatt-master 範例改寫,產生 classes.jar 檔供使用在 Unity 5.x Personal 版的 Android 平台上,使其可進行檢查藍芽功能、開啟藍芽功能、搜尋 BLE、連接 BLE 等藍芽操作功能。

透過引用 Unity Mono classes.jar 繼承 UnityPlayerActivity 的 Activity 中加入一個 callback function interface,以便 BroadcastReceiver  收到藍芽斷線、連線、服務、資料等訊息時,主動回傳到 Unity 中處理。

2016年8月12日 星期五

2016年8月11日 星期四

[Unity][Android] CommandInvokationFailure: Android Asset Packaging Tool failed (沒有 stderr 訊息)

今天 Android SDK Build-tools 23 更新到 Android SDK Build-tools 24 後,

Unity 編譯一直出現這樣的訊息 "Failed to re-package resources. See the Console for details."

2016年7月11日 星期一

[Unity][Android] 在 Unity 中直接使用 Android 的 Toast 方法

在 Unity 專案中建立 *.cs 檔,插入以下程式碼:

    AndroidJavaClass UnityPlayer;
    AndroidJavaObject currentActivity;
    AndroidJavaObject context;

2016年6月25日 星期六

[Android] Android Studio 建立與使用 AAR Library

透過 Android Studio Version 2.1.2 建立並使用 Android Archive Library (*.aar)。
要取得 *.jar 檔,只要對 *.aar 解壓縮即可。


2016年3月28日 星期一

[Android Studio] Rendering Problems

有時 Android 更新 API 版本後,Layout 預覽圖會產生 Rendering Problems:


2016年1月7日 星期四

[Android] 新舊 App 程式同時存在,安裝 App 不覆蓋原本的 App

Android 認 applicationId 判斷是否有舊版 App 程式存在,安裝 APK 時會詢問是否覆蓋舊有的 App 程式。

只要修改不同的 applicationId 就可讓新舊版程式都同時存在在 Android 系統內。

2016年1月4日 星期一

[Java][Snippet Code] Byte String to Byte

Reslove :
"Hello~
World!a1,B2,c3,D4,E5,f6,0xA7,0xb8,0xc9,0x1a,2B,3c,4D,0E,F0"

Result:
data=A1
data=B2
data=C3
data=D4
data=E5
data=F6
data=A7
data=B8
data=C9
data=1A
data=2B
data=3C
data=4D
data=0E
data=F0

2016年1月3日 星期日

[Android] Message Box




import android.content.Context;
import android.widget.Toast;

public void SayHello()
{
    Context context = getApplicationContext();
    Toast.makeText(context, "Hello!", Toast.LENGTH_LONG).show();
}


[Android] 手機馬達震動 Vibrator



在 ProjectName\app\src\main\AndroidManifest.xml 開啟 Vibrate 權限

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.epowertek.myapplication" >

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity android:name=".MainActivity" android:label="Vibrate">
        <activity
            android:name=".MainActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>


在 MainActivity.java 中加入下面程式碼測試

import android.os.Vibrator;

public void VibratorEvent(){
   Vibrator myVibrator = (Vibrator)getApplication().getSystemService(Service.VIBRATOR_SERVICE);
    myVibrator.cancel();
    // ON 100ms ->; OFF 200ms ->; ON 100ms ->; OFF 200ms
    myVibrator.vibrate(new long[]{100, 200, 100, 200}, -1);
}