家studyをつづって

IT技術やセキュリティで勉強したことをつづっています。

XamarinでAndroidアプリを作成(実践編)

はじめに

XamarinでAndroidアプリを作りながらプログラミングを勉強します。
この記事では、実際のプログラミングに関する内容をまとめます。
※用語の説明等、周辺知識はXamarinでAndroidアプリを作成(実践編)にまとめます。

 

 

 

実際のコード等

画像を表示する

Resources配下drawableに表示する画像を格納する。

activity_main.xmlを更新

<ImageView
android:src="@drawable/画像ファイル名"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/適当なid"/>

 

アプリのタイトルバーを表示しない

プロジェクト内のvalues/style.xmlを変更

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

 

バイブレーションを実行する 

プロジェクト内のAndroidManifest.xmlに追記

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

アクティビティの記載

Vibrator vibrator = (Vibrator)GetSystemService(Context.VibratorService);
vibrator.Vibrate(1000);・・・1秒間鳴動

 

カメラのフラッシュを点灯させる

プロジェクト内のAndroidManifest.xmlに追記

<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.flash" />
<uses-permission android:name="android.permission.CAMERA" />

アクティビティの記載

using Android.Hardware;

var camera = Android.Hardware.Camera.Open();
camera.StartPreview();////カメラデバイス開始
var cameraParameters = camera.GetParameters();
cameraParameters.FlashMode = Android.Hardware.Camera.Parameters.FlashModeTorch;//フラッシュ点灯
camera.SetParameters(cameraParameters);//パラメータ設定
cameraParameters.FlashMode = Android.Hardware.Camera.Parameters.FlashModeOff;//フラッシュ消灯
camera.SetParameters(cameraParameters);//パラメータ設定
camera.StopPreview();//カメラデバイス停止
camera.Release();//カメラデバイス解放

 

音声ファイルを再生する

アクティビティの記載

Resources配下にrawディレクトリを作成し、音声ファイルを格納する。

using Android.Media;

 

MediaPlayer.Create(this, Resource.Raw.音声ファイル).Start();

 

スプラッシュ画面の作成

スプラッシュ画面は大まかに以下の手順で作成できます。

  1. スプラッシュ画面の作成
  2. スプラッシュ画面のアクティビティを作成
  3. MainActivityの記述を変更する

1.スプラッシュ画面の作成
Resources配下drawableフォルダに、スプラッシュ画面(.xml)を作成します。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<color android:color="@color/splash_background"/>
</item>
<item>
<bitmap
android:src="@使う画像など"
android:tileMode="disabled"
android:gravity="center"/>
</item>
</layer-list>

 

テーマを設定

styles.xmlのStyleタグのブロックに以下を追加します。

<style name="MyTheme.Splash" parent ="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowBackground">1.で作成した画面ファイル</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowActionBar">true</item>
</style>

 

2.スプラッシュ画面のアクティビティを作成

スプラッシュ画面の.csファイルの例

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Timers;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Support.V7.App;
using Android.Util;
using Android.Views;
using Android.Widget;
namespace OneButton
{
[Activity(Theme = "@style/MyTheme.Splash", MainLauncher = true, NoHistory = true)]
public class SplashActivity : AppCompatActivity
{
static readonly string TAG = "X:" + typeof(SplashActivity).Name;
public override void OnCreate(Bundle savedInstanceState, PersistableBundle persistentState)
{
base.OnCreate(savedInstanceState, persistentState);
Log.Debug(TAG, "SplashActivity.OnCreate");
}
// Launches the startup task
protected override void OnResume()
{
base.OnResume();
Task startupWork = new Task(async () => { await SimulateStartupAsync(); });
startupWork.Start();
}
// Simulates background work that happens behind the splash screen
async Task SimulateStartupAsync()
{
Log.Debug(TAG, "Performing some startup work that takes a bit of time.");
await Task.Delay(5000); // Simulate a bit of startup work.//5秒間表示して、MainActivityに処理を移行
Log.Debug(TAG, "Startup work is finished - starting MainActivity.");
StartActivity(new Intent(Application.Context, typeof(MainActivity)));
}
}
}

 

 
3.MainActivityの記述を変更
MainActivity.csファイルに記述されている「MainLauncher = true」という記述を削除します。