イ 「MainActivity.java」プログラム(説明用プログラム)
1行目の「net.aichied.tabletquest」は,初期設定の最初に入力した「Application name」,「Company Dom」です。
package net.aichied.tabletquest;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Window;
public class MainActivity extends AppCompatActivity {
@Override
public void onCreate(Bundle bundle){
super.onCreate(bundle);
requestWindowFeature(Window.FEATURE_NO_TITLE);
Intent intent = new Intent(this,Quest.class);
startActivity(intent);
}
}
図8 実処理プログラム入力画面
イ 「Create New Class」のダイアログボックスの「Name」に入力(ここでは「Quest」)し,「OK」をクリックします。
図9 Create New Classダイアログボックス画面
ウ 「net.aichied.tabletquest」の下に「Quest」が表示されるので,表示された「Quest」をクリックし,プログラムを入力します。
図10 ソースコード入力画面1
図11 ソースコード入力画面2
エ 「Quest.java」プログラム(説明用プログラム)
・1行目の「net.aichied.tabletquest」は,初期設定の最初に入力した「Application name」,「Company Dom」です。
・プログラムは,各種初期設定の後,問題用画像ファイルの読み込み,問題データ及び,選択肢データの設定をしています。
・問題用画像ファイル(ファイル名は(pic*)で,プログラム内の変数は(pic[*])),問題データ(que[*]),選択肢データ(sel[*][*])です。
・今回,問題データは同じですが,変えることができます。
・正解は,選択肢データ(sel[*][*])の先頭のデータ(sel[*][0])にして定義しています。
・ランダムに問題及び選択肢データの並びを設定し,タイトル,問題用画像,問題,選択肢を表示しています。
・ラジオボタンをクリックし,「決定」をクリックすると,正解または不正解が表示されます。
package net.aichied.tabletquest;
import android.app.Activity;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;
import java.util.Random;
//ラジオボタン
public class Quest extends Activity implements View.OnClickListener {
private final static String BR = System.getProperty("line.separator"); //改行
private final static int WC = LinearLayout.LayoutParams.WRAP_CONTENT;
private RadioGroup radioGroup;//ラジオグループ
private Button button; //ボタン
private Bitmap pic[] = new Bitmap[3]; //画像データ変数の定義
private String que[] = new String[3]; //問題データ変数の定義
private String sel[][] = new String[3][4]; //元の選択肢データ変数の定義
long seed = System.currentTimeMillis() + Runtime.getRuntime().freeMemory();
Random rnd = new Random(seed); //ランダム(乱数)の定義
int cor; //正解添字変数の定義
//アクティビティ起動時に呼ばれる
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
requestWindowFeature(Window.FEATURE_NO_TITLE);
int i, j;
int ans[] = new int[4]; //表示用の選択肢データ変数の定義
// 写真データの読込
Resources r = getResources();
pic[0] = BitmapFactory.decodeResource(r, R.drawable. pic0);
pic[1] = BitmapFactory.decodeResource(r, R.drawable. pic1);
pic[2] = BitmapFactory.decodeResource(r, R.drawable. pic2);
//問題データ
que[0] = "写真の名称は?";
que[1] = "写真の名称は?";
que[2] = "写真の名称は?";
//選択肢データ
sel[0][0] = "配線用遮断器";
sel[0][1] = "モータブレーカ";
sel[0][2] = "漏電遮断器";
sel[0][3] = "交流電磁開閉器";
sel[1][0] = "リングスリーブ用圧着ペンチ";
sel[1][1] = "圧着端子用圧着ペンチ";
sel[1][2] = "ボルトクリッパ";
sel[1][3] = "ケーブルカッタ";
sel[2][0] = "アウトレットボックス";
sel[2][1] = "コンクリートボックス";
sel[2][2] = "スイッチボックス";
sel[2][3] = "露出スイッチボックス";
//レイアウトの生成
LinearLayout layout = new LinearLayout(this);
layout.setBackgroundColor(Color.WHITE);
layout.setOrientation(LinearLayout.VERTICAL);
setContentView(layout);
i = rnd.nextInt(3);
j = rnd.nextInt(4);
cor = 0;
ans[0] = j;
for (; ; ) {
j = rnd.nextInt(4);
if (ans[0] != j) break;
}
ans[1] = j;
if (j == 0) cor = 1;
for (; ; ) {
j = rnd.nextInt(4);
if (ans[0] != j && ans[1] != j) break;
}
ans[2] = j;
if (j == 0) cor = 2;
for (; ; ) {
j = rnd.nextInt(4);
if (ans[0] != j && ans[1] != j && ans[2] != j) break;
}
ans[3] = j;
if (j == 0) cor = 3;
TextView textView = new TextView(this);
textView.setText("第二種電気工事士試験用 鑑別問題");
textView.setTextSize(24);
textView.setTextColor(Color.rgb(0, 0, 0));
textView.setLayoutParams(new LinearLayout.LayoutParams(WC, WC));
layout.addView(textView);
Bitmap bitmap = pic[i] ;
ImageView imageView = new ImageView(this);
imageView.setImageBitmap(bitmap);
imageView.setLayoutParams(new LinearLayout.LayoutParams(600, 600));
layout.addView(imageView);
TextView textView2 = new TextView(this);
textView2.setText(que[i] + BR);
textView2.setTextSize(24);
textView2.setTextColor(Color.rgb(0, 0, 0));
textView2.setLayoutParams(new LinearLayout.LayoutParams(WC, WC));
layout.addView(textView2);
//ラジオボタン0の生成
RadioButton radio0 = new RadioButton(this);
radio0.setId(0);
radio0.setText(sel[i][ans[0]]);
radio0.setTextColor(Color.rgb(0, 0, 0));
//ラジオボタン1の生成
RadioButton radio1 = new RadioButton(this);
//noinspection ResourceType
radio1.setId(1);
radio1.setText(sel[i][ans[1]]);
radio1.setTextColor(Color.rgb(0, 0, 0));
//ラジオボタン2の生成
RadioButton radio2 = new RadioButton(this);
//noinspection ResourceType
radio2.setId(2);
radio2.setText(sel[i][ans[2]]);
radio2.setTextColor(Color.rgb(0, 0, 0));
//ラジオボタン3の生成
RadioButton radio3 = new RadioButton(this);
//noinspection ResourceType
radio3.setId(3);
radio3.setText(sel[i][ans[3]]);
radio3.setTextColor(Color.rgb(0, 0, 0));
//ラジオグループの生成(2)
radioGroup = new RadioGroup(this);
radioGroup.addView(radio0);
radioGroup.addView(radio1);
radioGroup.addView(radio2);
radioGroup.addView(radio3);
radioGroup.check(0);
radioGroup.setLayoutParams(new LinearLayout.LayoutParams(WC, WC));
layout.addView(radioGroup);
TextView textView3 = new TextView(this);
textView3.setText(BR);
layout.addView(textView3);
//ボタンの生成
button = new Button(this);
button.setText("決定");
button.setOnClickListener(this);
button.setLayoutParams(new LinearLayout.LayoutParams(WC, WC));
layout.addView(button);
}
//ボタンクリック時に呼ばれる
public void onClick(View v) {
if (radioGroup.getCheckedRadioButtonId() == cor)
Toast.makeText(this, "正解", Toast.LENGTH_SHORT).show();
else
Toast.makeText(this, "不正解", Toast.LENGTH_SHORT).show();
}
}
図12 マニュフェストファイル入力画面
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="net.aichied.tabletquest">
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<!--suppress AndroidDomInspection -->
<activity
android:name=".Quest"
android:label="JAVA鑑別問題">
<intent-filter>
<action android:name="android.intent.action.MAIN"
/>>
<category android:name="android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
</application>
</manifest>
<?xml version="1.0" encoding="utf-8"?>ダウンロードしたプログラムの先頭に,上の文字列をコピーして,プログラムの先頭行に追加(挿入)してください。
図13 アプリケーション実行画面1
イ 実行媒体の選択
実行する媒体を選びます(ここでは,「LENOVO EveryPad3」を選びました)。
図14 アプリケーション実行画面2
ウ アイコン作成(タブレット画面の例)
タブレットの画面にアイコンが作成されます。
図15 スタート画面
エ 実行画面
アイコンをダブルクリックすると実行します。
Android は米国 Google 社の米国及び各国における商標または登録商標です。
Lenovo Every Pad3 はLenovo Corporation,ヤマダ電機の商標または登録商標です。
その他,本コンテンツに掲載されているすべてのブランド名と製品名,商標および登録商標はそれぞれの帰属者の所有物です。本コンテンツでは©,®,TM などは明記してありません。