投稿

3月, 2013の投稿を表示しています

Xamarin で android の GPS NMEA メッセージを取得する

イメージ
Xamarin で android の GPS 位置情報を利用 に少しコードを追加して、GPS の NMEA メッセージを取得してみました。
これをテキストファイルに保存するだけで、地図ソフトなんかで読み込める GPS のログファイルになります。フォーマットを変換して google アースで軌跡を表示させたりもできます。


まず、Xamarin で AndroidManifest.xml が見当たらないんだけど、どうするの? なんかを参考に、GPS のパーミッションを設定します。(ACCESS_FINE_LOCATION を許可)

アクティビティは、文字を表示するために TextView を 3個貼り付けています。NMEA メッセージを表示する TextView はスクロールさせたかったので、ScrollView の上に貼り付けました。

以下コード

using System; using Android.App; using Android.Content; using Android.Runtime; using Android.Views; using Android.Widget; using Android.OS; using Android.Locations; // GPSを使うので追加 using System.Linq; // クエリの処理に必要 namespace gps_nmea0316 { [Activity (Label = "gps_nmea0316", MainLauncher = true)] public class Activity1 : Activity, ILocationListener, GpsStatus.INmeaListener { private LocationManager _locationManager; private TextView text1; private TextView text2; private TextView text3; private string _locationProvider; protected overri…

Xamarin で AndroidManifest.xml が見当たらないんだけど、どうするの?

イメージ
Xamarin で AndroidManifest.xml が無いんだけど、パーミッションとかどうしたらいいんだろう? と思ったのですが、ソリューションの設定で AndroidManifest.xml ファイルを生成することが出来ました。

以下、その手順。

[プロジェクト] - [<ソリューション名>のオプション] を開きます。

[プロジェクトオプション] の [ビルド] - [Android Application] を選ぶと、右側に「このプロジェクトには Android Manifest が無いよ」と表示されるので [Add Android manifest] ボタンを押します。

ボタンを押すとこんな感じで AndroidManifest.xml を編集できます。

GPS を使うなら [ACCESS_FINE_LOCATION] を選んでチェックを入れるだけです。

Eclipse では、プロジェクトを作成する時に指定する OS (API) のバージョンも、ここで指定出来ます。


[OK] ボタンを押すと [Properties] フォルダの下に AndroidManifest.xml が作成されます。
AndroidManifest.xml の中身。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="test0314.test0314"> <uses-sdk android:minSdkVersion="7" /> <application android:label="test0314"></application> <uses-permission android:name="android.permission.ACCESS…

Xamarin で android の GPS 位置情報を利用

イメージ
android で GPSの位置データの取得するテストを Xamarin で やってみました。
文字を表示するために、TextView をふたつ貼りつけたアクティビティを作っておきます。

以下コード。

まずは GPS 使用の許可を求めるために [Properties] - [Assemblyinfo.cs] を編集。
JAVA で書く時には AndroidManifest.xml でやることですね。
using System.Reflection; using System.Runtime.CompilerServices; using Android.App; using Android; // Manifest のため追加 // Information about this assembly is defined by the following attributes. // Change them to the values specific to your project. [assembly: AssemblyTitle("test0314")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("")] [assembly: AssemblyCopyright("uts")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] // The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". // The form "{Major}.{Minor}.*" will automatically update the build and revision, // and &q…

Xamarin で android の加速度センサーを使う

イメージ
using System; using Android.App; using Android.Content; using Android.Runtime; using Android.Views; using Android.Widget; using Android.OS; using Android.Hardware; // センサーを使うので追加 namespace test0313_1 { [Activity (Label = "test0313_1", MainLauncher = true)] public class Activity1 : Activity, ISensorEventListener { // Activity と ISensorEventListener から継承 float x,y,z; private TextView text1; private SensorManager _sensorManager; protected override void OnCreate (Bundle bundle) { base.OnCreate (bundle); SetContentView (Resource.Layout.Main); text1 = FindViewById<TextView> (Resource.Id.textView1); _sensorManager = (SensorManager)GetSystemService (SensorService); } protected override void OnResume() { base.OnResume(); _sensorManager.RegisterListener(this, _sensorManager.GetDefaultSensor(SensorType.Acce…

Xamarin タイマーで表示を定期更新

イメージ
タイマーを使ってみる単純な例として、0.5秒ごとに数を加算して表示するプログラムを作ってみます。

xamarin で使えるタイマーのクラスには何種類かあるようなのですが、System.Timers.timer クラスが簡単に使えそうだったので、これを使うことにします。
まず、文字を表示するために  TextView を一つ貼りつけたアクティビティを作成しておきます。(やり方は Xamarin でとても簡単な android アプリを作る なんかを参照)

コードはこんな感じ。
using System; using Android.App; using Android.Content; using Android.Runtime; using Android.Views; using Android.Widget; using Android.OS; using System.Timers; // タイマーを使うので追加 namespace timer2 { [Activity (Label = "timer2", MainLauncher = true)] public class Activity1 : Activity { int count = 1; private System.Timers.Timer timer1; private TextView text1; Handler mHandler = new Handler (); protected override void OnCreate (Bundle bundle) { base.OnCreate (bundle); // Set our view from the "main" layout resource SetContentView (Resource.Layout.Main); text1 = FindViewById<TextView> (Resource.Id.textView1); …

Xamarin でとても簡単な android アプリを作る

イメージ
前回の Hello, Android では、コードもアクティビティ(Windows アプリの ウィンドウのようなもの。アプリの画面。)も自動的に用意されていて、仕組みがよくわからなかったので、これらを自分で作ってみることにします。
とても簡単な例ということで、「ボタンを押したら文字を表示する」アプリを作ります。

Hello, Android の時と同じように、新規ソリューションを作成します。

まず画面(アクティビティ)を編集してみましょう。
左側のツリーから、[Resources] - [layout] - [Main.axml] をダブルクリックしてデザイナを開きます。
下の [コンテンツ] [ソース] のタブでソースの表示もできます。

デザイナの画面サイズを変更できます。
縦画面/横画面の切り替えもできます。
Android OS のバージョン違いによる、見栄えの違いも確認できます。
さて、自動的に作成されているボタンを削除します。
マウスでボタンを選択して、[Delete] キーを押せば削除出来ます。
消えました。
新しいボタンを配置します。
右側の [Toolbox] から [Button] をドラッグして配置します。
文字を表示させるために、[TextView] も配置します。
TextView を空きスペース一杯に広げます。
TextView を選択して [▼] 印をクリックすると空きスペース一杯に広がります。
[▼] 印が出ない時はもう一回クリックすると出てきます。(クリックするたびに、幅/高さの設定とマージンの設定が切り替わる。)
広がりました。

Button と TextView の id を確認しておきます。
右側の [プロパティ] - [Widget] の一番上に表示されています。これまでの手順通り進めてきたら、button1 と textView1 になっていると思います。自分のわかりやすいように変更しても良いです。

画面の編集はこれで終了。


ここから、ソースを編集して行きます。
まず、自動的に作られる MainActivity.cs です。

"MainActivity.cs" namespace test0309 { [Activity (Label = "test0309", MainLau…

Xamarin 2.0 のインストール と Hello Android

イメージ
C# で Android OS や iOS や Mac OS のアプリケーションを作成できる Xamarin を使ってみたら、結構便利に使えました。(iOS と Mac OS のアプリ開発には、Mac OS が動いているコンピュータが必要。Android は Windows のみで可能)
C# を少し触ったことがあるなら、Eclipse と Android SDK で Android OS のアプリを作るよりも、とっつきやすいなと思います。開発環境のインストールも Xamarin のほうが手間なく簡単です。
作成できるアプリケーションのサイズが制限される (32KB) かわりに、無料で使用出来る STARTER 版もあるので、気軽に試用してみることができます。 http://xamarin.com/faq 導入前のFAQ 概要とかエディションの違いとかhttp://docs.xamarin.com/ チュートリアルとかリファレンスとかサンプルとかがたくさん
Xamarin Studio のインストールhttp://xamarin.com/ のトップページのわかりやすいところに、ダウンロードのリンクがあるのでインストーラーをダウンロードします。この時、名前とメールアドレスと使用目的のアンケートに答える必要があります。
ダウンロードしたインストーラを実行して画面の指示に従って数回クリックすると、JDK や Android SDK や Xamarin Studio とか必要な物を自動的にダウンロードしてインストールしてくれます。
インストールはこれだけで終了です。Eclipse を使う時のように、SDK を別々にインストールする必要が無いのでとても楽ちんです。

Hello, Android - 新規ソリューション(プロジェクト)の作成 動作テストとして新規のソリューション(Visual Studio でいうプロジェクト)を作成して、実行してみます。

Xamarine Studio を 起動したら、[ファイル]-[新規]-[ソリューション] を選択。

特別なことをしていなくても、メニューが日本語になっています。ありがたいですね。
「新しいソリューションダイアログ」で、[C#]-[Android]-[Android Application] を選択。

「名前」と「位置」は適当…

雪がたくさん積もった

イメージ
久しぶりにたくさん雪が積もった。一晩でこれだけ積もったのは今冬初かな?
週間天気予報を見ると、しばらく天気が良さそうなので最後の大雪かな?もう一回くらい大雪降るかな?
夕方からまた吹雪いている。天気予報では降雪量はあまり多くはならないみたいだけど、風がとても強い。