diff --git a/app/build.gradle b/app/build.gradle index 5677a4a..1493402 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -22,9 +22,12 @@ implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support.constraint:constraint-layout:1.1.3' + implementation 'com.android.support:design:28.0.0' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' // Retrofit implementation "com.squareup.retrofit2:retrofit:2.5.0" + //QRコードリーダー + implementation 'com.journeyapps:zxing-android-embedded:3.6.0' } diff --git a/app/src/main/java/com/example/cosmosclient/views/AddMemberActivity.java b/app/src/main/java/com/example/cosmosclient/views/AddMemberActivity.java new file mode 100644 index 0000000..f9a5a05 --- /dev/null +++ b/app/src/main/java/com/example/cosmosclient/views/AddMemberActivity.java @@ -0,0 +1,112 @@ +package com.example.cosmosclient.views; + +import android.content.Intent; +import android.graphics.BitmapFactory; +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.view.View; +import android.widget.AdapterView; +import android.widget.BaseAdapter; +import android.widget.Button; +import android.widget.ImageView; +import android.widget.ListView; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import com.example.cosmosclient.R; + +public class AddMemberActivity extends AppCompatActivity implements AdapterView.OnItemClickListener { + + private static final String[] scenes = { + "QRコードで追加", + "IDで追加", + "メールで招待" + }; + + // ちょっと冗長的ですが分かり易くするために + private static final int[] photos = { + R.drawable.camera_image, + R.drawable.search_image, + R.drawable.mail_image, + + }; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_add_member); + + // ListViewのインスタンスを生成 + ListView listView = findViewById(R.id.list_view); + + // BaseAdapter を継承したadapterのインスタンスを生成 + // レイアウトファイル list.xml を activity_main.xml に + // inflate するためにadapterに引数として渡す + BaseAdapter adapter = new ListViewAdapter(this.getApplicationContext(), + R.layout.list, scenes, photos); + + // ListViewにadapterをセット + listView.setAdapter(adapter); + + // クリックリスナーをセット + listView.setOnItemClickListener(this); + + } + + @Override + public void onItemClick(AdapterView parent, View v, + int position, long id) { + + + Intent intent = null; + // clickされたpositionのtextとphotoのID + String selectedText = scenes[position]; + if(selectedText.contains("QR")==true){ + intent = new Intent(this.getApplicationContext(), DisplayQRActivity.class); + }else if(selectedText.contains("ID")==true){ + intent = new Intent(this.getApplicationContext(), DisplayQRActivity.class); + }else{ + intent = new Intent(this.getApplicationContext(), DisplayQRActivity.class); + } + +// Intent intent = new Intent(this.getApplicationContext(), DisplayQRActivity.class); + // SubActivityへ遷移 + startActivity(intent); + } +// @Override +// protected void onCreate(Bundle savedInstanceState) { +// super.onCreate(savedInstanceState); +// setContentView(R.layout.activity_add_member); +// //各種idを取得 +// Button qrButton = findViewById(R.id.addQR); +// Button idButton = findViewById(R.id.addID); +// Button mailButton = findViewById(R.id.addMail); +// TextView groupText=findViewById(R.id.groupName); +// +// //QRからメンバー追加の画面遷移処理画面を記述 +// qrButton.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View v) { +// Intent intent = new Intent(getApplication(), DisplayQRActivity.class); +// startActivity(intent); +// } +// }); +// //IDからメンバー追加の画面遷移処理画面を記述 +// idButton.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View v) { +// Intent intent = new Intent(getApplication(), DisplayQRActivity.class); +// startActivity(intent); +// } +// }); +// //Mailからメンバー追加の画面遷移処理画面を記述 +// mailButton.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View v) { +// Intent intent = new Intent(getApplication(), DisplayQRActivity.class); +// startActivity(intent); +// } +// }); +// +// } +} diff --git a/app/src/main/java/com/example/cosmosclient/views/DisplayQRActivity.java b/app/src/main/java/com/example/cosmosclient/views/DisplayQRActivity.java new file mode 100644 index 0000000..18c332e --- /dev/null +++ b/app/src/main/java/com/example/cosmosclient/views/DisplayQRActivity.java @@ -0,0 +1,40 @@ +package com.example.cosmosclient.views; + +import android.graphics.Bitmap; +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.util.AndroidRuntimeException; +import android.widget.ImageView; + +import com.example.cosmosclient.R; +import com.google.zxing.BarcodeFormat; +import com.google.zxing.WriterException; +import com.journeyapps.barcodescanner.BarcodeEncoder; + +public class DisplayQRActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_display_qr); + //QRコード化する文字列 + String data = "http://researchers.adm.konan-u.ac.jp/html/130_ja.html"; + //QRコード画像の大きさを指定(pixel) + int size = 500; + + + try { + BarcodeEncoder barcodeEncoder = new BarcodeEncoder(); + //QRコードをBitmapで作成 + Bitmap bitmap = barcodeEncoder.encodeBitmap(data, BarcodeFormat.QR_CODE, size, size); + + //作成したQRコードを画面上に配置 + ImageView imageViewQrCode = (ImageView) findViewById(R.id.QRimage); + imageViewQrCode.setImageBitmap(bitmap); + + } catch (WriterException e) { + throw new AndroidRuntimeException("Barcode Error.", e); + } + + } +} diff --git a/app/src/main/java/com/example/cosmosclient/views/ListViewAdapter.java b/app/src/main/java/com/example/cosmosclient/views/ListViewAdapter.java new file mode 100644 index 0000000..31b2691 --- /dev/null +++ b/app/src/main/java/com/example/cosmosclient/views/ListViewAdapter.java @@ -0,0 +1,75 @@ +package com.example.cosmosclient.views; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import com.example.cosmosclient.R; + +public class ListViewAdapter extends BaseAdapter { + static class ViewHolder { + TextView textView; + ImageView imageView; + } + + private LayoutInflater inflater; + private int itemLayoutId; + private String[] titles; + private int[] ids; + + ListViewAdapter(Context context, int itemLayoutId, + String[] scenes, int[] photos) { + super(); + this.inflater = (LayoutInflater) + context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + this.itemLayoutId = itemLayoutId; + this.titles = scenes; + this.ids = photos; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + ViewHolder holder; + // 最初だけ View を inflate して、それを再利用する + if (convertView == null) { + // activity_main.xml に list.xml を inflate して convertView とする + convertView = inflater.inflate(itemLayoutId, parent, false); + // ViewHolder を生成 + holder = new ViewHolder(); + holder.textView = convertView.findViewById(R.id.textView); + holder.imageView = convertView.findViewById(R.id.imageView); + convertView.setTag(holder); + } + // holder を使って再利用 + else { + holder = (ViewHolder) convertView.getTag(); + } + + // holder の imageView にセット + holder.imageView.setImageResource(ids[position]); + // 現在の position にあるファイル名リストを holder の textView にセット + holder.textView.setText(titles[position]); + + return convertView; + } + + @Override + public int getCount() { + // texts 配列の要素数 + return titles.length; + } + + @Override + public Object getItem(int position) { + return null; + } + + @Override + public long getItemId(int position) { + return 0; + } +} diff --git a/app/src/main/java/com/example/cosmosclient/views/SigninActivity.java b/app/src/main/java/com/example/cosmosclient/views/SigninActivity.java deleted file mode 100644 index 2fed0e0..0000000 --- a/app/src/main/java/com/example/cosmosclient/views/SigninActivity.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.example.cosmosclient.views; - -import android.content.Intent; -import android.support.v7.app.AppCompatActivity; -import android.os.Bundle; -import android.view.View; -import android.widget.Button; -import android.widget.EditText; - -import com.example.cosmosclient.R; - -public class SigninActivity extends AppCompatActivity { - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_signin); - - //各種IDを取得 - Button SigninButton = findViewById(R.id.SigninButton); - Button SignupButton = findViewById(R.id.SignupButton); - EditText EmailAddressText = findViewById(R.id.EMailAddressText); - EditText PasswordText = findViewById(R.id.PasswordText); - Button ForgotPasswordButton = findViewById(R.id.ForgotPasswordButton); - - //Sign inボタンの処理 - SigninButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Intent intent = new Intent(getApplication(), GroupList.class); - startActivity(intent); - finish(); - } - }); - - //サインアップ画面への遷移処理 - SignupButton.setOnClickListener(new View.OnClickListener(){ - @Override - public void onClick(View v){ - Intent intent = new Intent(getApplication(), SignupActivity.class); - startActivity(intent); - finish(); - } - }); - } -} diff --git a/app/src/main/java/com/example/cosmosclient/views/SignupActivity.java b/app/src/main/java/com/example/cosmosclient/views/SignupActivity.java deleted file mode 100644 index c738fa8..0000000 --- a/app/src/main/java/com/example/cosmosclient/views/SignupActivity.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.example.cosmosclient.views; - -import android.content.Intent; -import android.support.v7.app.AppCompatActivity; -import android.os.Bundle; -import android.view.View; -import android.widget.Button; -import android.widget.EditText; - -import com.example.cosmosclient.R; - -public class SignupActivity extends AppCompatActivity { - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_signup); - - //各種idを取得 - Button LoginButton = findViewById(R.id.LoginButton); - Button MakeAccountButton = findViewById(R.id.MakeAccountButton); - EditText EmailAddressText = findViewById(R.id.EMailAddressText); - EditText PasswordText = findViewById(R.id.PasswordText); - EditText ConfirmPasswordText = findViewById(R.id.ConfirmPasswordText); - - //Make Accountボタンの処理 - MakeAccountButton.setOnClickListener(new View.OnClickListener(){ - @Override - public void onClick(View v){ - Intent intent = new Intent(getApplication(), GroupList.class); - startActivity(intent); - finish(); - } - }); - - //サインイン画面への遷移処理 - LoginButton.setOnClickListener(new View.OnClickListener(){ - @Override - public void onClick(View v){ - Intent intent = new Intent(getApplication(),SigninActivity.class); - startActivity(intent); - finish(); - } - }); - - } -} diff --git a/app/src/main/res/drawable/borderless_button.xml b/app/src/main/res/drawable/borderless_button.xml deleted file mode 100644 index 7a4684f..0000000 --- a/app/src/main/res/drawable/borderless_button.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/camera_image.png b/app/src/main/res/drawable/camera_image.png new file mode 100644 index 0000000..32185f3 --- /dev/null +++ b/app/src/main/res/drawable/camera_image.png Binary files differ diff --git a/app/src/main/res/drawable/group_image.png b/app/src/main/res/drawable/group_image.png new file mode 100644 index 0000000..2d02bdc --- /dev/null +++ b/app/src/main/res/drawable/group_image.png Binary files differ diff --git a/app/src/main/res/drawable/mail_image.png b/app/src/main/res/drawable/mail_image.png new file mode 100644 index 0000000..d6c8f82 --- /dev/null +++ b/app/src/main/res/drawable/mail_image.png Binary files differ diff --git a/app/src/main/res/drawable/qr_code_ex.png b/app/src/main/res/drawable/qr_code_ex.png new file mode 100644 index 0000000..9ad8000 --- /dev/null +++ b/app/src/main/res/drawable/qr_code_ex.png Binary files differ diff --git a/app/src/main/res/drawable/search_image.png b/app/src/main/res/drawable/search_image.png new file mode 100644 index 0000000..046dfb3 --- /dev/null +++ b/app/src/main/res/drawable/search_image.png Binary files differ diff --git a/app/src/main/res/drawable/white.png b/app/src/main/res/drawable/white.png new file mode 100644 index 0000000..15f8d06 --- /dev/null +++ b/app/src/main/res/drawable/white.png Binary files differ diff --git a/app/src/main/res/layout/activity_add_member.xml b/app/src/main/res/layout/activity_add_member.xml new file mode 100644 index 0000000..44839a0 --- /dev/null +++ b/app/src/main/res/layout/activity_add_member.xml @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_display_qr.xml b/app/src/main/res/layout/activity_display_qr.xml new file mode 100644 index 0000000..1b1b99c --- /dev/null +++ b/app/src/main/res/layout/activity_display_qr.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_signin.xml b/app/src/main/res/layout/activity_signin.xml deleted file mode 100644 index 7416c05..0000000 --- a/app/src/main/res/layout/activity_signin.xml +++ /dev/null @@ -1,156 +0,0 @@ - - - -