V1.0.1(2) 添加Firebase
This commit is contained in:
parent
132f7989a8
commit
b83e5b229e
@ -3,6 +3,8 @@ import java.util.Date
|
|||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
alias(libs.plugins.android.application)
|
alias(libs.plugins.android.application)
|
||||||
|
id("com.google.gms.google-services")
|
||||||
|
id("com.google.firebase.crashlytics")
|
||||||
}
|
}
|
||||||
val timestamp = SimpleDateFormat("MM_dd_HH_mm").format(Date())
|
val timestamp = SimpleDateFormat("MM_dd_HH_mm").format(Date())
|
||||||
android {
|
android {
|
||||||
@ -13,8 +15,8 @@ android {
|
|||||||
applicationId = "com.lock.arcanvasart"
|
applicationId = "com.lock.arcanvasart"
|
||||||
minSdk = 23
|
minSdk = 23
|
||||||
targetSdk = 34
|
targetSdk = 34
|
||||||
versionCode = 1
|
versionCode = 2
|
||||||
versionName = "1.0.0"
|
versionName = "1.0.1"
|
||||||
setProperty("archivesBaseName", "AR Canvas Art_V" + versionName + "(${versionCode})_$timestamp")
|
setProperty("archivesBaseName", "AR Canvas Art_V" + versionName + "(${versionCode})_$timestamp")
|
||||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||||
}
|
}
|
||||||
@ -59,4 +61,13 @@ dependencies {
|
|||||||
implementation ("androidx.camera:camera-extensions:1.4.0")
|
implementation ("androidx.camera:camera-extensions:1.4.0")
|
||||||
implementation ("androidx.camera:camera-camera2:1.4.0")
|
implementation ("androidx.camera:camera-camera2:1.4.0")
|
||||||
|
|
||||||
|
// Import the BoM for the Firebase platform
|
||||||
|
implementation(platform("com.google.firebase:firebase-bom:33.5.1"))
|
||||||
|
|
||||||
|
// Add the dependencies for the Crashlytics and Analytics libraries
|
||||||
|
// When using the BoM, you don't specify versions in Firebase library dependencies
|
||||||
|
implementation("com.google.firebase:firebase-crashlytics")
|
||||||
|
implementation("com.google.firebase:firebase-analytics")
|
||||||
|
implementation("com.google.firebase:firebase-config")
|
||||||
|
|
||||||
}
|
}
|
||||||
29
app/google-services.json
Normal file
29
app/google-services.json
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"project_info": {
|
||||||
|
"project_number": "490252788816",
|
||||||
|
"project_id": "ar-canvas-art",
|
||||||
|
"storage_bucket": "ar-canvas-art.firebasestorage.app"
|
||||||
|
},
|
||||||
|
"client": [
|
||||||
|
{
|
||||||
|
"client_info": {
|
||||||
|
"mobilesdk_app_id": "1:490252788816:android:607835a15af070ea989d55",
|
||||||
|
"android_client_info": {
|
||||||
|
"package_name": "com.lock.arcanvasart"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"oauth_client": [],
|
||||||
|
"api_key": [
|
||||||
|
{
|
||||||
|
"current_key": "AIzaSyDv-cMovN3KYmocQ7C8HxnWzrnM38L-Nq0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"services": {
|
||||||
|
"appinvite_service": {
|
||||||
|
"other_platform_oauth_client": []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"configuration_version": "1"
|
||||||
|
}
|
||||||
@ -5,6 +5,7 @@ import android.content.Context;
|
|||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
|
import com.google.firebase.FirebaseApp;
|
||||||
import com.lock.arcanvasart.Utils.ImageRepository;
|
import com.lock.arcanvasart.Utils.ImageRepository;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -25,6 +26,16 @@ public class MyApplication extends Application {
|
|||||||
super.onCreate();
|
super.onCreate();
|
||||||
mContext = getApplicationContext();
|
mContext = getApplicationContext();
|
||||||
|
|
||||||
|
// // 确保Firebase初始化
|
||||||
|
// FirebaseApp.initializeApp(this);
|
||||||
|
//
|
||||||
|
// // 输出日志以确认Firebase初始化
|
||||||
|
// if (!FirebaseApp.getApps(this).isEmpty()) {
|
||||||
|
// Log.d("TAG", "Firebase 初始化成功");
|
||||||
|
// } else {
|
||||||
|
// Log.e("TAG", "Firebase 初始化失败");
|
||||||
|
// }
|
||||||
|
|
||||||
// 检查是否需要初始化数据库
|
// 检查是否需要初始化数据库
|
||||||
SharedPreferences preferences = getSharedPreferences(PREF_NAME, MODE_PRIVATE);
|
SharedPreferences preferences = getSharedPreferences(PREF_NAME, MODE_PRIVATE);
|
||||||
boolean isDatabaseInitialized = preferences.getBoolean(KEY_INITIALIZED, false);
|
boolean isDatabaseInitialized = preferences.getBoolean(KEY_INITIALIZED, false);
|
||||||
|
|||||||
@ -161,13 +161,13 @@ public class CameraActivity extends AppCompatActivity implements View.OnTouchLis
|
|||||||
if (PermissionUtils.handlePermissionsResult(grantResults)) {
|
if (PermissionUtils.handlePermissionsResult(grantResults)) {
|
||||||
startCamera();
|
startCamera();
|
||||||
} else {
|
} else {
|
||||||
Toast.makeText(this, "相机权限被拒绝,请在设置中启用权限", Toast.LENGTH_SHORT).show();
|
Toast.makeText(this, "Camera permissions denied, please enable permissions in Settings", Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
} else if (requestCode == STORAGE_PERMISSION_REQUEST_CODE) {
|
} else if (requestCode == STORAGE_PERMISSION_REQUEST_CODE) {
|
||||||
if (PermissionUtils.handlePermissionsResult(grantResults)) {
|
if (PermissionUtils.handlePermissionsResult(grantResults)) {
|
||||||
openImagePicker();
|
openImagePicker();
|
||||||
} else {
|
} else {
|
||||||
Toast.makeText(this, "存储权限被拒绝,请在设置中启用权限", Toast.LENGTH_SHORT).show();
|
Toast.makeText(this, "Storage permission is denied. Please enable the permission in the Settings", Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -175,7 +175,7 @@ public class CameraActivity extends AppCompatActivity implements View.OnTouchLis
|
|||||||
private void takePhoto() {
|
private void takePhoto() {
|
||||||
// 确保 imageCapture 实例已初始化
|
// 确保 imageCapture 实例已初始化
|
||||||
if (imageCapture == null) {
|
if (imageCapture == null) {
|
||||||
Toast.makeText(this, "拍照功能未初始化", Toast.LENGTH_SHORT).show();
|
Toast.makeText(this, "The photo function is not initialized", Toast.LENGTH_SHORT).show();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -199,12 +199,12 @@ public class CameraActivity extends AppCompatActivity implements View.OnTouchLis
|
|||||||
new ImageCapture.OnImageSavedCallback() {
|
new ImageCapture.OnImageSavedCallback() {
|
||||||
@Override
|
@Override
|
||||||
public void onImageSaved(@NonNull ImageCapture.OutputFileResults outputFileResults) {
|
public void onImageSaved(@NonNull ImageCapture.OutputFileResults outputFileResults) {
|
||||||
Toast.makeText(CameraActivity.this, "照片已保存到相册", Toast.LENGTH_SHORT).show();
|
Toast.makeText(CameraActivity.this, "The photo has been saved to the album", Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onError(@NonNull ImageCaptureException exception) {
|
public void onError(@NonNull ImageCaptureException exception) {
|
||||||
Toast.makeText(CameraActivity.this, "拍照失败: " + exception.getMessage(), Toast.LENGTH_SHORT).show();
|
Toast.makeText(CameraActivity.this, "Photo failure: " + exception.getMessage(), Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
@ -334,7 +334,7 @@ public class CameraActivity extends AppCompatActivity implements View.OnTouchLis
|
|||||||
if (bitmap != null) {
|
if (bitmap != null) {
|
||||||
imageView.setImageBitmap(bitmap);
|
imageView.setImageBitmap(bitmap);
|
||||||
} else {
|
} else {
|
||||||
Toast.makeText(this, "加载图片失败", Toast.LENGTH_SHORT).show();
|
Toast.makeText(this, "Image loading failed", Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -351,7 +351,7 @@ public class CameraActivity extends AppCompatActivity implements View.OnTouchLis
|
|||||||
imageView.setImageBitmap(bitmap);
|
imageView.setImageBitmap(bitmap);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
Toast.makeText(this, "加载图片失败: " + e.getMessage(), Toast.LENGTH_SHORT).show(); // 显示错误信息
|
Toast.makeText(this, "Image loading failed: " + e.getMessage(), Toast.LENGTH_SHORT).show(); // 显示错误信息
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -46,9 +46,5 @@ public class SplashActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
countDownTimer.start();
|
countDownTimer.start();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -119,11 +119,11 @@ public class ProfileFragment extends Fragment implements ProfileAdapter.OnHeader
|
|||||||
if (isImageSizeAcceptable(selectedImageUri)) {
|
if (isImageSizeAcceptable(selectedImageUri)) {
|
||||||
saveImageToInternalStorage(selectedImageUri); // 保存图片到内部存储
|
saveImageToInternalStorage(selectedImageUri); // 保存图片到内部存储
|
||||||
} else {
|
} else {
|
||||||
Toast.makeText(getContext(), "图片大小超过限制", Toast.LENGTH_SHORT).show();
|
Toast.makeText(getContext(), "The image size is out of limit", Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
Toast.makeText(getContext(), "无法获取图片大小: " + e.getMessage(), Toast.LENGTH_SHORT).show();
|
Toast.makeText(getContext(), "Could not get image size: " + e.getMessage(), Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -164,7 +164,7 @@ public class ProfileFragment extends Fragment implements ProfileAdapter.OnHeader
|
|||||||
Bitmap bitmap = BitmapFactory.decodeStream(inputStream); // 解码图片
|
Bitmap bitmap = BitmapFactory.decodeStream(inputStream); // 解码图片
|
||||||
|
|
||||||
if (bitmap == null) {
|
if (bitmap == null) {
|
||||||
Toast.makeText(getContext(), "无法加载图片", Toast.LENGTH_SHORT).show();
|
Toast.makeText(getContext(), "Unable to load image", Toast.LENGTH_SHORT).show();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -181,7 +181,7 @@ public class ProfileFragment extends Fragment implements ProfileAdapter.OnHeader
|
|||||||
// 检查图片是否已经存在
|
// 检查图片是否已经存在
|
||||||
new Thread(() -> {
|
new Thread(() -> {
|
||||||
if (isImageAlreadyExists(imagePath)) {
|
if (isImageAlreadyExists(imagePath)) {
|
||||||
requireActivity().runOnUiThread(() -> Toast.makeText(getContext(), "该图片已经存在", Toast.LENGTH_SHORT).show());
|
requireActivity().runOnUiThread(() -> Toast.makeText(getContext(), "The image already exists", Toast.LENGTH_SHORT).show());
|
||||||
imageFile.delete(); // 删除重复的文件
|
imageFile.delete(); // 删除重复的文件
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -194,7 +194,7 @@ public class ProfileFragment extends Fragment implements ProfileAdapter.OnHeader
|
|||||||
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
Toast.makeText(getContext(), "保存图片失败: " + e.getMessage(), Toast.LENGTH_SHORT).show();
|
Toast.makeText(getContext(), "Failed to save picture: " + e.getMessage(), Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,6 @@
|
|||||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||||
plugins {
|
plugins {
|
||||||
alias(libs.plugins.android.application) apply false
|
alias(libs.plugins.android.application) apply false
|
||||||
|
id("com.google.gms.google-services") version "4.3.15" apply false
|
||||||
|
id ("com.google.firebase.crashlytics") version "2.9.2" apply false
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user