Tag Archives: app inventor

App Inventor classic 的 .zip 原始檔轉 AI2 .aia

MIT App Inventor 有提供 App Inventor classic 的 .zip 原始檔轉 AI2 .aia 的線上服務喔,請點選這個網址就好:

http://convert.appinventor.mit.edu/。進到以下畫面後,點選 [選擇檔案],選擇您所要轉檔的 .zip 原始檔之後就會自動轉成 .aia 下載到您的電腦。再將這個 .aia 上傳到您個人的 AI2帳號下就可以囉,目前轉了 5,60 個檔案都沒什麼問題。

祝大家使用愉快喔~

未命名I

App Inventor 與 FIRST 機器人競賽

本文消息來自 MIT App Inventor 部落格,說明新一賽季的競賽改用 Android 智慧型手機作為機器人的遙控器,其中程式就可以用 App Inventor 來編寫。在2015-2016賽季中,選手要製作機器人來完成 FIRST Res-Q 救援賽,今年是以山區救援為主題喔。

重點來了!每一組都須使用 Android Smartphone 作為主要的機器人控制器。隊伍使用的是特製的 MIT App Inventor 來編寫機器人程式來完成各種競賽任務。

所以呢, App Inventor 的應用面愈來愈廣啦,有興趣協助我們測試樂高EV3元件的朋友,請留言給我們。感謝

[誠徵勇者] App Inventor 樂高EV3元件封測

Continue reading

160227 28 CubeeFun 噴泉工作坊

CubeeFun 歡樂噴泉套件,將創作噴泉的夢想在您的桌前…實現了!

CubeeFun歡樂噴泉套件透過透明噴嘴和全彩 LED,將光與水巧妙地結合。透過 Arduino 控制器,使用者可以運用 Android 手機 APP,Arduino 軟體,和 DMX 燈光控制軟硬體,進行多元的互動創作。

報名請點我

8029bc5ca12742ba8d642244ca266a07

課程規劃(2天共12小時):

2/27 AM,Cubee1 和 Android – 學習如何使用 Cubee1 件和透過 Android手機 APP  做控制:

  • Cubee1 套件介紹與單噴泉組裝
  • Cubee1 的 Androind 手機 APP  控制
  • APP Inventor 之攥寫
  • APP Inventor 控制 Cubee1

2/27 PM,Cubee1 和 Arduino – 學習如何使用 Cubee1 的 Arduino 控制器和透過 Arduino 程式做控制:

  • Cubee1 之 Arduino 控制器介紹
  • Cubee1 之 Arduino 程式解說
  • Cubee1 之 Arduino 程式改寫練習

2/28 AM,Cubee1 和 DMX – 學習如何串連 Cubee1 套件成為多噴嘴之噴泉,並運用專業的 DMX 舞台燈光控制軟硬體控制 Cubee1:

  • Cubee1 之 Arduino 控制器之串連
  • Cubee1 控制器串連程式安裝
  • Cubee1 控制器串連與 DMX 控制器
  • DMX 程式控制 Cubee1 之範例

2/28 PM,Cubee1協 力創作 – 學習多噴嘴噴泉之展演創作:

  • Cubee1 多噴泉串連創作
  • DMX 控制範例 – FreeStyler Lighting Control
  • Cubee1 的延伸應用

對象:Arduino / Android APP 玩家、學習者,DMX 燈光控制玩家、學習者,互動藝術裝置玩家、學習者,創作者,創客 / Makers…

條件:自備筆電和 Android 智慧型手機,學習過 Android APP Inventor 和 Arduino 程式撰寫更佳!

延伸學習:CubeeFun 歡樂噴泉專題創作。

參考資訊:Cubee1 的組裝,歡樂噴泉專題 – Cubee25

臉書粉絲團:CubeeFun 歡樂噴泉

 

備註:

  1. 活動滿4人開班,8人滿班。
  2. 活動使用之套件由主辦單位提供借用,參加者須自備筆電、Android 智慧型手機。
  3. 主辦單位保留調整課程場地之權利。
    4. 票價含稅,不含午餐、套件。

活動嘉賓

蔡宇振

BrixPlay

[誠徵勇者] App Inventor 樂高EV3元件封測

當年,我們誤打誤撞發現了 App Inventor,也不經意發現它有現成的 Lego Nxt 元件可以直接控制樂高NXT機器人。因此當樂高發布 EV3 機器人之後,我們也殷殷期盼MIT App Inventor 團隊可以發布 EV3機器人的控制元件。

但,至少在我去年 (2015) 在廣州與 MIT 的教授們討論到這件事時,它們的回覆是 “暫時不會有

那麼,就自己來吧

經過漫長的努力之後,CAVEDU 自製的 App Inventor EV3 機器人元件終於接近完工。(App Inventor 樂高EV3元件 – 準備上線)

12376557_935096773227864_7220939319532785577_n

在此號召有興趣先玩玩看的朋友與朋友們,一起來封測吧!請在此篇留言或寫信到 service@cavedu.com,我們會告訴您如何登入 CAVEDU 自行架設的 server,就可以進行 EV3 元件的測試。

但請一定要分享您的作品與意見給我們,覺得好或覺得爛都可以說,也歡迎許願,把您覺得哪些功能應該有但是沒有,或是哪些功能可以更好,通通告訴我們吧。

只要您真的使用 CAVEDU 所開發的 App Inventor EV3 元件做出一個手機結合樂高機器人的應用,就是對我們最大的肯定與鼓勵喔!

 

[雙A計劃] Part9:藍牙遙控機器手臂車

整合性的範例就來一台機器手臂遙控機器人吧,把機器手臂裝在雙馬達車體上就完工了,一樣可以透過 App Inventor 來編寫。使用多個按鈕來控制機器人的各個動作。來看看之前的雙A計畫內容:

[雙A計畫] 常見問題整理

[雙A計劃] Part0:App Inventor 透過藍牙傳送訊號給 Arduino

[雙A計劃] Part1:App Inventor 經由藍牙控制 Arduino LED 亮滅

[雙A計劃] Part2:App Inventor 經由藍牙控制 Arduino LED 漸明漸暗

[雙A計劃] Part3:Android 手機透過藍牙接收 Arduino 類比腳位狀態

[雙A計劃] Part4:App Inventor 藍牙遙控 Arduino 雙輪機器人

[雙A計劃] Part5:Paperduino 藍牙控制 LED 閃爍

[雙A計畫]Part6:Arduino 傳兩筆資料到 Android 手機

[雙A計劃] Part7:Arduino超音波感測距離回傳數值給Android手機

[雙A計劃] Part8:Android 手機對 Arduino 同時進行資料收發

範例程式請點我下載(App Inventor中文學習網檔案庫)

準備以下材料:

1 Android系統智慧型手機

2.Arduino相容開發板 (本文使用 86Duino Educake)

3.藍牙收發接收器(本系列使用JY-MCU04 或 JY-MCU05)

4.麵包板

5.MeArm 或其他相同配置的四自由度機器手臂,使用四個伺服馬達

6.雙輸出行動電源或電池

IMG_0373

台南 Maker Faire 現場展示很受歡迎喔

本範例使用 86duino Educake來製作電路,您可使用各種相容 Arduino 板子。以下是主程式流程,還需要匯入其他函式庫,在此就不列出囉,請直接下載檔案即可。

2015-12-25 13.40.54

Continue reading

App Inventor 樂高EV3元件 – 準備上線

2010年我們會開始玩 App Inventor 純粹是誤打誤撞,也不小心發現了上面的 LegoNxt元件可以做到直接控制樂高NXT機器人這件事,而且更棒的是樂高機器人端不用寫程式,只要專心寫手機端程式就好。這當然是因為樂高對於NXT定製了一個 DirectCommand 規格,實際上就是一堆位元陣列,在CAVEDU 2011 年所出版的  [Android / NXT 機器人大戰:智慧型手機控制機器人] 與 2012 年所出版的 [Android手機程式超簡單App Inventor 機器人卷] 中就有談到這些事情。大概就是長得像這樣的東西,NXT自己會知道哪一個位元組的意義並轉換為它該做的事情

0x0C 0x00 0x80 0x04 0x02 0x64 0x07 0x00 0x00 0x20 0x00 0x00 0x00 0x00

首先:為什麼App Inventor 的NXT元件沒辦法控制EV3?因為兩者的 Direct command 格式根本不同,所以EV3根本看不懂。

請參考我們一年多以前寫的 App Inventor 直接控制樂高 EV3 機器人 Direct Command

但要自己做一個 App Inventor 元件也不是件容易的事情,因為沒有可供測試的地方啊,所以您需要使用 MIT 提供的原始碼自己架一個 linux server,接著才能在上面開發元件。後來 MIT 開了一個 extension server 讓大家可以編寫 .aix 擴充檔來測試,相關的文件才慢慢多了起來。包含台灣的 PieceDuino 也有開發了相關的元件:

12346361_1651657771769401_2492747964884747469_n

請參考 puraVida 的教學,您就可以知道底層還是用 java 來寫 Android,總歸一句就是硬硬硬。這件事大概搞了一年多吧…  最近終於露出曙光,感謝台大資工系林祥瑞同學。本文是讓各位好朋友們知道,CAVEDU 為了大家,一直有在努力~另外,

歡迎大家許願說說看您對於EV3元件應該要新增哪些功能,我們會試著做出來喔!

Continue reading

[App Inventor 教學] Google Street View API 靜態街景圖

與 Static Map API 相同,Google 街景圖也有API可以透過 url 來呼叫。.aia 原始檔請點我下載
格式如下說明:
 
點選開啟如下圖
 
參數說明如下: 
  • size=320×400 – 圖檔尺寸
  • location=25.046655,121.515012 – 座標(緯度,經度).
  • fov=90 – field of view 視野. 90度相當於人眼視角, >90 為廣角效果, <90 為望遠效果
  • heading=120 – 指向, 0~359, 請注意 0 不一定代表正北方
  • pitch=10 – 俯仰角 -90 (向下看地板) ~ 90 (向上看天空)

Continue reading

十月活動紀錄-花蓮高商Appinventor

20151017_131749

十月的兩個周末,受到資處科主任的邀請,小編坐火車來到花蓮市的花蓮高商,跟大家分享如何使用APPinventor,一到教室就有歡迎海報,讓小編受寵若驚阿,這次是10/17、10/24日的12小時,小班制密集訓練,讓我們來看看~

20151017_101725

這次總共有十位同學參加研習營,整天全神貫注,讓小編覺得花商的同學小小年紀,集中力就很不錯。

20151017_101735

進度跟得很快的同學,正在撥時間時間美化他的APP畫面

20151017_134921

現場除了同學之外,也有好幾位老師撥時間來學習如何使用APPinventor軟體,讓我覺得花商整體的學習欲望,不輸給北北基的學生們。

001 002

這次透過BMI計算機、小畫家、點餐系統、滾球遊戲,跟花商的同學與老師們分享APPinventor的換頁功能、運算功能、判斷式功能、繪圖功能、呼叫手機相簿功能、遊戲角色移動功能、利用手機傾斜讓人物移動的方向感測器功能,以及TQC測驗的點餐功能APP。希望讓分享的同學有所收穫。

003 004

  

App Inventor 擴充元件何處尋?

App Inventor 新增了擴充元件伺服器之後,陸續有一些應用出來了。包含 MIT App Inventor puravida 網友 都陸續推出了一些擴充元件讓大家來試用。

下圖是 MIT 提供的擴充檔,目前上面提供了四種擴充元件:

  1. VectorArithmetic:計算向量
  2. ImageProcessor:影像處理,可回傳灰階圖
  3. SoundAnalysis:聲音分析,可分析經由來自手機麥克風的聲音音高。
  4. ScaleDector:Canvas 上的多點觸碰手勢偵測功能

1234

延伸閱讀:

[App Inventor] 如何匯入 .aix 擴充元件到 App Inventor 測試伺服器

App Inventor Extension 新測試伺服器,允許自定義元件了!

[App Inventor 教學] 成績管理系統 V1.5

本範例可讓同學明白簡易的資料結構定義方式,並使用 list 搭配 for each 迴圈來計算以下項目。
.aia 原始檔請由本頁下載:http://www.appinventor.tw/score_v2

1. 計算國文平均分數

2. 計算英文平均分數
 
3. 列出兩科的不及格名單
 
4. 列出全班名單
 
5. 承接4. 取出指定人名的email
 

Designer頁面
 

Blocks 程式說明
 
首先,我們把成績的資料結構 score 這樣定義:(人名, email, 國文分數, 英文分數),目前是 4 x 4 的二維清單。
在這樣的架構下,您可以自由新增更多欄位。score_sum 是用來計算成績總和用的變數。temp 則是用來產生暫存用的清單。
 
2. 計算國文平均分數
 
 
當然啦,計算英文平均分數也是一樣的做法,只是欄位3要改為欄位4。
 
 
3. 列出國文不及格名單
 
只是在上述迴圈中加入一個 if 去檢查 score [number] [3] 就是國文分數是否 <60,如果 <60 就把該項目加入 temp 清單中,最後顯示在
 
 
英文不及格名單做法也一樣囉,記得把欄位3改為欄位4就可以了。
 



 
4. 列出全班名單


 
點選之後,則根據所點選項目來取出 score 該項目的 2 號。使用兩次 select list item 指令之後,二維清單就會降維度兩次變成一筆純量就是 email,您成功了嗎?
 

執行畫面


  

    
 



 

[App Inventor] 如何匯入 .aix 擴充元件到 App Inventor 測試伺服器

本文將介紹如何匯入 .aix 擴充元件到 App Inventor 測試伺服器,請注意您需登入 App Inventor 測試伺服器而非 AI2 的正式版伺服器。

 
請按照以下步驟操作:
 
STEP1:請由此連結下載要匯入的 .aix 檔,這是 PuraVida 所寫的螢幕快照功能
 
STEP2:在畫面左側的 Extension 元件區中,點選 Import extension,會跳出以下視窗詢問 .aix 檔案路徑,確認之後請點選 Import 上傳檔案。
 
 
STEP3:命名元件,在此沒有改動
 
 
STEP4:匯入成功之後,就可以在 Extension 元件區看到這個元件了
 
 
STEP5:新增這個元件
 
 
STEP6:在 Blocks 頁面中也可以看到這個元件,相關的事件與方法當然都可以自由編寫 (Java)

STEP7:寫個小程式來看看吧


 
補充資料:本 .aix 檔的 Java source code,有興趣的朋友可以看看 event 與 method 是如何對應的喔
 

Java source code

package com.puravidaapps;

import android.content.Context;
import android.graphics.Bitmap;
import android.util.Log;
import android.view.View;
import android.app.Activity;
import android.os.Environment;

import com.google.appinventor.components.annotations.DesignerComponent;
import com.google.appinventor.components.annotations.DesignerProperty;
import com.google.appinventor.components.annotations.PropertyCategory;
import com.google.appinventor.components.annotations.SimpleEvent;
import com.google.appinventor.components.annotations.SimpleFunction;
import com.google.appinventor.components.annotations.SimpleObject;
import com.google.appinventor.components.annotations.SimpleProperty;
import com.google.appinventor.components.annotations.UsesPermissions;
import com.google.appinventor.components.common.ComponentCategory;
import com.google.appinventor.components.common.PropertyTypeConstants;
import com.google.appinventor.components.runtime.*;

import java.io.File;
import java.io.FileOutputStream;

@DesignerComponent(version = TaifunScreenshot.VERSION,
    description = "Extension to take a screenshot.",
    category = ComponentCategory.EXTENSION,
    nonVisible = true,
    iconName = "https://puravidaapps.com/images/taifun16.png")
@SimpleObject(external = true)
@UsesPermissions(permissionNames = "android.permission.WRITE_EXTERNAL_STORAGE")

public class TaifunScreenshot extends AndroidNonvisibleComponent implements Component {

  public static final int VERSION = 1;
  private ComponentContainer container;
  private Context context;
  private final Activity activity;
  private String fileName;
  private static final String LOG_TAG = "TaifunScreenshot";

  public TaifunScreenshot(ComponentContainer container) {
    super(container.$form());
    this.container = container;
    context = (Context) container.$context();
    activity = (Activity) container.$context();
    fileName = "screenshot.jpg";
    Log.d(LOG_TAG, "TaifunScreenshot Created" );
  }

  /**
   * Return fileName
   */
  @SimpleProperty(category = PropertyCategory.BEHAVIOR,
      description = "filename of the screenshot to be taken")
  public String FileName() {
    return fileName;
  }


  /**
   * Set fileName
   */
  @DesignerProperty(editorType = PropertyTypeConstants.PROPERTY_TYPE_STRING,
      defaultValue = "screenshot.jpg")
  @SimpleProperty
  public void FileName(String fileName) {
    this.fileName = fileName;
  }


  /**
   * Take a screenshot
   */
  @SimpleFunction(description = "Take a screenshot.")
  public void TakeScreenshot() {
    // "http://stackoverflow.com/a/5651242/1545993
    try {
      // image naming and path  to include sd card  appending name you choose for file
      String mPath = Environment.getExternalStorageDirectory().toString() + File.separator + fileName;

      // create bitmap screen capture
      View v1 = activity.getWindow().getDecorView().getRootView();
      v1.setDrawingCacheEnabled(true);
      Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());
      v1.setDrawingCacheEnabled(false);

      File imageFile = new java.io.File(mPath);

      FileOutputStream outputStream = new FileOutputStream(imageFile);
      int quality = 100;
      bitmap.compress(Bitmap.CompressFormat.JPEG, quality, outputStream);
      outputStream.flush();
      outputStream.close();

      Log.d(LOG_TAG, "screenshot taken: " + imageFile.toString());
      AfterScreenshot(imageFile.toString());
    } catch (Throwable e) {
      // Several error may come out with file handling or OOM
      Log.e(LOG_TAG, e.getMessage(), e);
      e.printStackTrace();
    }
  }

  /**
   * The AfterScreenshot event
   */
  @SimpleEvent(description = "Return image.")
  public void AfterScreenshot(String image){
    EventDispatcher.dispatchEvent(this, "AfterScreenshot", image);
  }

}


 

App Inventor 更新 nb146 – 允許多 Screen 之間的複製貼上功能 – 背包 backpack

App Inventor 更新到 nb146,新增背包功能,就是允許多 Screen 之間的複製貼上功能。本次更新詳述如下:

未命名

  • 元件名稱的空白與字元處理改善,對於非英語系的語言來說相當重要。
  • 點擊  blocks editor 頁面空白處就可以下載所有指令的 png 圖檔,不用再辛苦地螢幕截圖啦,記得先把元件排整齊喔 (請參考上圖,是選單的一個選項)。
  • HorizontalArrangement 與 VerticalArrangement Layouts 元件新增背景顏色 (Background Color) 與背景圖 ( Image) 兩個屬性。
  • 當 App Inventor App 執行時,可以與藍牙鍵盤連線或斷線。
  • 錯誤修正與效能改進。

參考資料:文淵閣的 App Inventor nb146 背包功能介紹

App Inventor Extension 新測試伺服器,允許自定義元件了!

Hal Ableson 博士(也是 MIT App Inventor 頭頭)月前宣布了App Inventor Extension 新測試伺服器,允許自定義元件了!雖然要自己開發元件就是要寫 Java,但總算是開了一條路。

這真的是很重要的一件事,因為程式語言就是在諸多使用者當中不斷改進,加入愈來愈多好用的元件(現在誰還在自己寫 sine 函數呢?)才會更方便好用。由於 App Inventor 2 伺服器無法讓大家任意上傳自行開發的元件,所以只有自己架一個 AI2 server 才有辦法做到這件事。但現在有了新的測試伺服器之後,就可以讓使用者隨時上傳自己寫的元件來測試了,當然也可以匯入別人寫好的元件來當作函式庫來用,感動感動。

Hal 表示目前 Extension 功能只放在測試伺服器上,但未來穩定之後就會變成 App Inventor 正式功能之一。目前網友 PuraVida 就已經寫了一些小元件讓大家來玩玩看,您可由其網頁看到大略的 Java 語法並下載 .aix 檔來匯入。

Continue reading

104資訊應用技能競賽 創意 App 程式設計大賽 – 歡迎報名喔

今年的 104 資訊應用技能競賽,有三大項目:

(一) 創意App程式設計大賽 (二) 呼朋引伴一路遊(現場觀展及線上參賽) (三) 數位內容軟體應用大賽

其中創意 App 程式設計大賽可以用 App Inventor 來參賽,歡迎報名!不過沒有獎金只有獎狀就是了。

http://www.infomonth.com/104/AppInventor.asp

Continue reading

TQC+ 的 App Inventor 認證指南出版了,歡迎各位老師申請排考

TQC App Inventor 認證要開考啦,認證指南也出版了。有興趣的老師請與電腦技能基金會聯絡排考喔

之前的種子教師研習請看:台北場 / 台中場 / 高雄場

松崗出版 / 碁峰出版

XC15690_cover_OL
XC15690_cover_OL

 

Continue reading