2013年3月30日土曜日

SurfaceViewが何故か無駄に遅い

SurfaceViewが何故か無駄に遅い!

どういうこと!?

速いものだと思い込んでたんだけど・・・

invalidateで来たonDraw内でdrawLinesで描画してると1msもかからない。
だけど、独自スレッド内でlockCanvasしたCanvasでdrawLinesやると500msかかってる・・・・!!

ん!?どういうことなの!?

TextureViewでもやってみたけど同じ感じ。
GalaxyNexusのせいだと思ってジンジャーブレッド端末でもやってみたが同じ。

本当にどういうことなの!?

解決したら、また追記しよう・・・。

ぜんぜん解決への道がみつからないのだけどね・・・。


2013年3月28日木曜日

Google翻訳がオフラインに。

Android Google 翻訳 2.6 アップデート
• オフライン言語パック(Android2.3以降で使用可)を使用してネットワークに接続せずに翻訳します。
• カメラを使用して中国語、日本語、韓国語の縦書きテキストを翻訳します。

・・・ということで、
ネットレスな場で使えてしまう!
海外で大活躍ではないか!

ワクワクしながら言語パックインストールしてみて、ネットワーク切って、翻訳してみた!しっかりと翻訳してくれました!

縦書きも読み取ってくれた!







オフラインで使うには言語パックをインストールします!
[メニュー]→[オフラインの言語]

   

インストール完了!



これでオフラインで翻訳できてしまいます!

素晴らしすぎます。

ちなみに見てのとおり100MBとかそういう大きさなので。
1つ3分くらいかかるかな?

2013年3月27日水曜日

JellyBeanの連打のアレ


Android毎度のバージョン毎のあのAndroidチームのお遊び心♪

[設定]→[端末情報]→[Androidバージョン]

でAndroidのバージョンを連打!連打!連打!

 

すると、Jelly Beanのアイコンがでます!
ジンジャーブレッドは風刺な感じでしたが、
JellyBeanは、かわいらしいなにか!(ゼリービーンのお菓子に顔)


 

さらに長押ししてみると・・・

 

ソラマメ型の砂糖菓子があちこち飛び回ります!動きます!飛び回ります!

さらにいろんな方向に投げられますw

顔のついたJellyBeanのアイコンや違うお菓子も紛れている!




ちなみに、横画面にも対応w

試しに全部のお菓子を画面外に投げてみましたが、
また次々と復活してきて、何も起こりませんでした。

(そんなことで遊んでるなよ!ってツッコミはどうぞ入れてくださいw)

気づいてないだけで、またオマケ機能があったりして。


こういうGoogleプログラマさんの遊び心は好きです。




2013年3月26日火曜日

JellyBeanの暗黙的Intent

Jelly Beanでは、暗黙的Intentのアクティビティの表示はグリッド表示になってますね。

今まではリスト表示だったから、いきなりだと違和感だよね。
でも、スクロールの距離が短くなるからこっちのほうが視認性がよいのかな?

「常にこのアプリを使用する」的なチェックボックスは「常時」ってボタンに。
アプリを選択して起動するときは「1回のみ」ってボタン。

なんか「1回のみ」っていう日本語訳が気に入ってない私。

「今回のみ」とか「起動」とかのほうがいいですね。


 

2013年3月22日金曜日

uses-permissionとuses-featureに気をつけよ!

<uses-permission>と<uses-feature>に気をつけよ!

なぜかって言うと、<uses-feature>って、勝手に付与される場合があるからです!

例えばBluetooth使いたいから以下のパーミッションつけるとすると、



<uses-permission android:name="android.permission.BLUETOOTH" />

<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />


↓が自動的に付与されます!


<uses-feature android:name="android.hardware.bluetooth"/>


Bluetoothを使いますよー!Bluetooth使えない端末は門前払いします!
ってな感じ。

Bluetoothを使う前提のアプリならいいけど、Bluetooth使える場合だけ使いたいです!ってときには困っちゃいます。

なので、Bluetoothは必ずは必要としませんよー!って書いてあげましょう。


<uses-feature android:name="android.hardware.bluetooth" android:required="false" />


そうしないと、意味もなく使えない端末がでてきてしまう。。





久しぶりにAndroidでOpenCV使おうと思ったのだが・・・

久しぶりにAndroidでOpenCV使おうと思ったのだが・・・ 
適当に.jarファイルをビルドパスにいれたり、
Javaのビルドパスにプロジェクトいれたりして、 何で動かないんだ???って。



 E/AndroidRuntime(4306): java.lang.UnsatisfiedLinkError: Native method not found: org.opencv.highgui.Highgui.imread_1:(Ljava/lang/String;)J


 E/AndroidRuntime(5154): java.lang.NoClassDefFoundError: org.opencv.highgui.Highgui


やり方が違うのを忘れてました。


設定はこっちでしたね。

[プロジェクトのプロパティ]→[Android]→[ライブラリー]→[追加]

ライブラリーって項目が下のほうに隠れてるので、見落とし。

よかったよかった。。。


まぁ、これこれで忘れてだけだし、動いたからいいのだが、
バージョンアップしてたOpenCV使う落としたら、


 E/AndroidRuntime(8230): java.lang.ExceptionInInitializerError

 E/AndroidRuntime(11556): java.lang.NoClassDefFoundError: org.opencv.android.OpenCVLoader


なにやら初期化が必要なようで、
OpenCVLoaderの初期化するやつをサンプルみて加えたけど、

それでも動かないよ・・・。
GooglePlayのOpenCVMnagerも入れてるよ。。。


仕方ないので、バージョン2.4.3は保留で2.4.1を組み込んでみてる。

なんで動かないんでしょうね。エラー吐かないで急に落ちるんだけど・・・。

まぁ、後で解決します。

2013年3月13日水曜日

縦スクロールバーさんをどかしましょう。

SyntaxHighlighterで縦スクロールバーの必要性がないと思った。
とういうわけで、消しましょうか。


 <link href='http://alexgorbatchev.com/pub/sh/current/styles/shCore.css' rel='stylesheet' type='text/css'/>
 <link href='http://alexgorbatchev.com/pub/sh/current/styles/shThemeEclipse.css' rel='stylesheet' type='text/css'/>
 <style>
 <!--
  .syntaxhighlighter {
    overflow-y: hidden !important;
    padding: 1px !important;
  }
 -->
 </style>
 <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js' type='text/javascript'/>
 <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushAS3.js' type='text/javascript'/>
 <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushBash.js' type='text/javascript'/>
 <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCSharp.js' type='text/javascript'/>
 <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCpp.js' type='text/javascript'/>
 <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCss.js' type='text/javascript'/>
 <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js' type='text/javascript'/>
 <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJava.js' type='text/javascript'/>
 <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJavaFX.js' type='text/javascript'/>
 <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPerl.js' type='text/javascript'/>
 <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPhp.js' type='text/javascript'/>
 <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js' type='text/javascript'/>
 <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPython.js' type='text/javascript'/>
 <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushRuby.js' type='text/javascript'/>
 <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushSql.js' type='text/javascript'/>
 <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushVb.js' type='text/javascript'/>
 <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js' type='text/javascript'/>
 <script language='javascript' type='text/javascript'>
  SyntaxHighlighter.config.bloggerMode = true;
  SyntaxHighlighter.all();
 </script>

ミニブラウザでyoutube見ると画面真っ暗?

前書いたやつの転載。


ICSでミニブラウザ使って、
Youtube見に行くと






てな感じで真っ暗で音だけ聞こえるみたいで、残念な感じになってしまう。。。
ぐはぁ。

GBのときと違ってWebView内で動画再生しようとしてるみたいです。

そんなときは、↓



赤丸のフルスクリーンボタン?みたいのを押していただけると、
動画をフローティングさせますよ!!









Chiee!ミニブラウザ


Androidのアニメーション。くるくるっと。

Androidのアニメーション。


<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
        android:background="#ff000000" android:shareInterpolator="false" android:zAdjustment="top">
        
    <translate 
        android:fromXDelta="0%" android:toXDelta="0%"
        android:fromYDelta="0%" android:toYDelta="50%"
        android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
        android:startOffset="0" android:duration="100"
        />    
         
    <scale android:fromXScale="1.0" android:toXScale="0.0"
            android:fromYScale="1.0" android:toYScale="0.0"
            android:pivotX="50%" android:pivotY="50%"
            android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
            android:startOffset="100"
            android:duration="1000" />
    
    <alpha android:fromAlpha="1.0" android:toAlpha="0.5"
            android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
            android:startOffset="100"
            android:duration="1000"/>

    <rotate 
        android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
        android:fromDegrees="0" android:toDegrees="720"
        android:pivotX="50%" android:pivotY="50%" 
        android:startOffset="100" android:duration="1000"
        />   
        
</set>

BluetoothChatを使ってみましょうか!

AndroidのBluetoothAPIの使い方のサンプルコードであるBluetoothChat。


初期画面

メニューボタンを押すと。
ペアリングしてない場合、ペアリングする必要あがる!
まず一番下のメニューを押すと自分が検索してもらう状態になる。

ここではいを押すと検索してもらえる。

相手側では1番目か2番目のメニューで相手を探します!

無事接続できれば、メッセージ交換できるよ!

メッセージ入力

相手から送られてきた!

相手側も同様

ペアリングは標準の設定アプリのBluetoothの箇所でもできます。


AndroidでのBluetooth通信では、まずペアリングを明示的にユーザに操作してもらって行う必要があります。
バックグランドで自動でペアリングとかは仕様上は無理なので、すれ違い通信とかを行うことは難しいですね。
ペアリングさえすればバックグランドで接続できます。

ペアリングを行うところもアプリに含まれてたけど、設定あぷりでもできるので、自分で作るのは面倒なときは設定アプリがあるから省略して大丈夫ですね。

BluetoothChatのサンプルコードが若干雑なつくりのような?
問題なく動いてるけど、いろいろ問題があるきがするのだが・・・・。
まぁサンプルだから、これにそんなに時間をかけられなかったのかな。
きっと忙しいでしょしね。あるだけ感謝しなくてはね。

というわけで、Bluetooth