diff --git a/app/build.gradle b/app/build.gradle index 7353d41..40adf01 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -27,5 +27,7 @@ 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' implementation 'com.android.support:design:28.0.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 241824c..300967e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -9,13 +9,36 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> - + + + + + + + + + + + + + + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..2fed0e0 --- /dev/null +++ b/app/src/main/java/com/example/cosmosclient/views/SigninActivity.java @@ -0,0 +1,46 @@ +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 new file mode 100644 index 0000000..c738fa8 --- /dev/null +++ b/app/src/main/java/com/example/cosmosclient/views/SignupActivity.java @@ -0,0 +1,47 @@ +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/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 new file mode 100644 index 0000000..7416c05 --- /dev/null +++ b/app/src/main/res/layout/activity_signin.xml @@ -0,0 +1,156 @@ + + + +