Merge pull request 'feature/parent_login' (#107) from feature/parent_login into main

Reviewed-on: #107
This commit is contained in:
Fujimatsu 2024-07-01 02:49:29 +00:00
commit c1b1cdcd1c
3 changed files with 178 additions and 7 deletions

View File

@ -44,4 +44,6 @@ dependencies {
implementation project(':model')
implementation project(':utils')
implementation project(':data')
implementation 'com.google.android.gms:play-services-cronet:18.0.1'
}

View File

@ -4,17 +4,47 @@ import android.os.Bundle;
import androidx.fragment.app.Fragment;
import android.text.Editable;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.TextClock;
import android.widget.TextView;
import org.chromium.net.CronetEngine;
import org.chromium.net.CronetException;
import org.chromium.net.UrlRequest;
import org.chromium.net.UrlResponseInfo;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.Channels;
import java.nio.channels.WritableByteChannel;
import java.nio.charset.StandardCharsets;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import javax.inject.Inject;
import dagger.hilt.android.AndroidEntryPoint;
import one.nem.kidshift.utils.KSLogger;
/**
* A simple {@link Fragment} subclass.
* Use the {@link DebugTempLoginFragment#newInstance} factory method to
* create an instance of this fragment.
*/
@AndroidEntryPoint
public class DebugTempLoginFragment extends Fragment {
@Inject
KSLogger logger;
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
private static final String ARG_PARAM1 = "param1";
@ -59,6 +89,93 @@ public class DebugTempLoginFragment extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_debug_temp_login, container, false);
View view = inflater.inflate(R.layout.fragment_debug_temp_login, container, false);
logger.setTag("Login");
//xmlレイアウトからid取得
EditText id = (EditText) view.findViewById(R.id.idtext);
EditText pass = (EditText) view.findViewById(R.id.pass);
CronetEngine.Builder engineBuilder = new CronetEngine.Builder(getContext().getApplicationContext());
engineBuilder.enableHttp2(true);
CronetEngine engine = engineBuilder.build();
//ログインボタンを押したときの処理
view.findViewById(R.id.button).setOnClickListener(
view1 -> {
//入力された値id,passを取得
Editable getText = id.getText();
Editable getPass = pass.getText();
// //入力された値id,passをログに表示
// logger.debug(getText.toString());
// logger.debug(getPass.toString());
Executor executor = Executors.newSingleThreadExecutor();
CronetCallback callback = new CronetCallback();
UrlRequest.Builder requestBuilder = engine.newUrlRequestBuilder(
"https://kidshift-beta.nem.one/debug/hello", callback, executor);
UrlRequest request = requestBuilder.build();
request.start();
}
);
return view;
}
private class CronetCallback extends UrlRequest.Callback{
private ByteArrayOutputStream bytesReceived = new ByteArrayOutputStream(); // 追加
private WritableByteChannel receiveChannel = Channels.newChannel(bytesReceived); // 追加
@Override
public void onRedirectReceived(UrlRequest request,UrlResponseInfo info,String newLocationUrl){
request.followRedirect();
// リダイレクトを許可しない場合
// request.cancel();
}
@Override
public void onResponseStarted(UrlRequest request, UrlResponseInfo info) {
request.read(ByteBuffer.allocateDirect(1024));
}
@Override
public void onReadCompleted(UrlRequest request, UrlResponseInfo info, ByteBuffer byteBuffer) {
byteBuffer.flip();
try {
receiveChannel.write(byteBuffer);
} catch (IOException e){
}
byteBuffer.clear();
request.read(byteBuffer);
String body = StandardCharsets.UTF_8.decode(byteBuffer).toString();
logger.debug(body);
}
@Override
public void onSucceeded(UrlRequest request, UrlResponseInfo info) {
byte[] byteArray = bytesReceived.toByteArray();
String json = new String(byteArray);
}
@Override
public void onFailed(UrlRequest request, UrlResponseInfo info, CronetException error) {
error.printStackTrace();
}
}
}

View File

@ -1,14 +1,66 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".DebugTempLoginFragment">
<!-- TODO: Update blank fragment layout -->
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/hello_blank_fragment" />
</FrameLayout>
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="100dp"
android:text="KidShiftアカウント"
android:textSize="34sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/idtext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="120dp"
android:ems="10"
android:hint="IDを入力"
android:inputType="text"
android:textSize="30sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView" />
<EditText
android:id="@+id/pass"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:ems="10"
android:inputType="textPassword"
android:textSize="30sp"
android:hint="パスワード入力"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/idtext" />
<Button
android:id="@+id/button"
android:layout_width="154dp"
android:layout_height="68dp"
android:layout_marginTop="80dp"
android:backgroundTint="#9400d3"
android:text="ログイン"
android:textColor="#ffffff"
android:textSize="24sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/pass" />
</androidx.constraintlayout.widget.ConstraintLayout>