マテリアルデザイン3(You) 音声およびスクリーンレコーダーアプリ
6 | 7 | 8 |
](https://f-droid.org/packages/com.bnyro.recorder/)
37 | [
](https://github.com/you-apps/RecordYou/releases)
38 |
39 |
45 |
46 |
47 |
48 |
61 |
62 |
63 | ## クレジット
64 | * アイコンデザイン:[M00NJ](https://github.com/M00NJ)
65 |
66 | ## License
67 |
68 | Record Youは [**GNU General Public License**](https://www.gnu.org/licenses/gpl.html) に基づいてライセンスが付与されています。必要に応じて使用、学習、共有できます。
69 |
--------------------------------------------------------------------------------
/app/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("com.android.application")
3 | id("org.jetbrains.kotlin.android")
4 | }
5 |
6 | android {
7 | namespace = "com.bnyro.recorder"
8 | compileSdk = 34
9 |
10 | defaultConfig {
11 | applicationId = "com.bnyro.recorder"
12 | minSdk = 21
13 | targetSdk = 34
14 | versionCode = 19
15 | versionName = "8.0"
16 |
17 | testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
18 | vectorDrawables {
19 | useSupportLibrary = true
20 | }
21 | }
22 |
23 | buildTypes {
24 | release {
25 | isMinifyEnabled = true
26 | proguardFiles(
27 | getDefaultProguardFile("proguard-android-optimize.txt"),
28 | "proguard-rules.pro"
29 | )
30 | }
31 | debug {
32 | isDebuggable = true
33 | applicationIdSuffix = ".debug"
34 | }
35 | }
36 | compileOptions {
37 | sourceCompatibility = JavaVersion.VERSION_1_8
38 | targetCompatibility = JavaVersion.VERSION_1_8
39 | }
40 | kotlinOptions {
41 | jvmTarget = "1.8"
42 | }
43 | buildFeatures {
44 | compose = true
45 | buildConfig = true
46 | }
47 | composeOptions {
48 | kotlinCompilerExtensionVersion = "1.5.9"
49 | }
50 | packagingOptions {
51 | resources {
52 | excludes += "/META-INF/{AL2.0,LGPL2.1}"
53 | }
54 | }
55 | }
56 |
57 | dependencies {
58 | // Core & runtime
59 | implementation("androidx.core:core-ktx:1.12.0")
60 | implementation("androidx.lifecycle:lifecycle-service:2.6.1")
61 | implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.7.0")
62 | implementation("androidx.documentfile:documentfile:1.0.1")
63 |
64 | val media3Version = "1.2.1"
65 |
66 | // For media playback using ExoPlayer
67 | implementation("androidx.media3:media3-exoplayer:$media3Version")
68 | implementation("androidx.media3:media3-ui:$media3Version")
69 |
70 | // Compose
71 | implementation(platform("androidx.compose:compose-bom:2024.02.00"))
72 | implementation("androidx.compose.ui:ui")
73 | implementation("androidx.compose.ui:ui-graphics")
74 | implementation("androidx.compose.ui:ui-tooling-preview")
75 | implementation("androidx.compose.material3:material3")
76 | implementation("androidx.compose.animation:animation-graphics")
77 |
78 | implementation("androidx.activity:activity-compose:1.8.2")
79 | implementation("androidx.compose.material:material-icons-extended")
80 |
81 | //Navigation
82 | implementation("androidx.navigation:navigation-compose:2.7.7")
83 |
84 | // Testing
85 | testImplementation("junit:junit:4.13.2")
86 | androidTestImplementation("androidx.test.ext:junit:1.1.5")
87 | androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
88 | androidTestImplementation(platform("androidx.compose:compose-bom:2024.02.00"))
89 | androidTestImplementation("androidx.compose.ui:ui-test-junit4")
90 | debugImplementation("androidx.compose.ui:ui-tooling")
91 | debugImplementation("androidx.compose.ui:ui-test-manifest")
92 | }
93 |
--------------------------------------------------------------------------------
/app/src/main/java/com/bnyro/recorder/ui/theme/Theme.kt:
--------------------------------------------------------------------------------
1 | package com.bnyro.recorder.ui.theme
2 |
3 | import android.app.Activity
4 | import android.os.Build
5 | import androidx.compose.foundation.isSystemInDarkTheme
6 | import androidx.compose.material3.MaterialTheme
7 | import androidx.compose.material3.darkColorScheme
8 | import androidx.compose.material3.dynamicDarkColorScheme
9 | import androidx.compose.material3.dynamicLightColorScheme
10 | import androidx.compose.material3.lightColorScheme
11 | import androidx.compose.runtime.Composable
12 | import androidx.compose.runtime.SideEffect
13 | import androidx.compose.ui.graphics.Color
14 | import androidx.compose.ui.platform.LocalContext
15 | import androidx.compose.ui.platform.LocalView
16 | import androidx.core.view.WindowCompat
17 |
18 | private val DarkColorScheme = darkColorScheme(
19 | primary = Purple80,
20 | secondary = PurpleGrey80,
21 | tertiary = Pink80
22 | )
23 |
24 | private val LightColorScheme = lightColorScheme(
25 | primary = Purple40,
26 | secondary = PurpleGrey40,
27 | tertiary = Pink40
28 |
29 | /* Other default colors to override
30 | background = Color(0xFFFFFBFE),
31 | surface = Color(0xFFFFFBFE),
32 | onPrimary = Color.White,
33 | onSecondary = Color.White,
34 | onTertiary = Color.White,
35 | onBackground = Color(0xFF1C1B1F),
36 | onSurface = Color(0xFF1C1B1F),
37 | */
38 | )
39 |
40 | private val AmoledDarkColorScheme = darkColorScheme(
41 | primary = Color(0xFFEE665B),
42 | background = Color(0xFF000000),
43 | onPrimary = Color(0xFFFFFFFF)
44 | )
45 |
46 | @Composable
47 | fun RecordYouTheme(
48 | darkTheme: Boolean = isSystemInDarkTheme(),
49 | // Dynamic color is available on Android 12+
50 | dynamicColor: Boolean = true,
51 | amoledDark: Boolean = false,
52 | content: @Composable () -> Unit
53 | ) {
54 | val colorScheme = when {
55 | amoledDark && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> {
56 | val context = LocalContext.current
57 | dynamicDarkColorScheme(context).copy(background = Color.Black)
58 | }
59 |
60 | amoledDark -> AmoledDarkColorScheme
61 | dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> {
62 | val context = LocalContext.current
63 | if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context)
64 | }
65 |
66 | darkTheme -> DarkColorScheme
67 | else -> LightColorScheme
68 | }
69 | val view = LocalView.current
70 | if (!view.isInEditMode) {
71 | SideEffect {
72 | val activity = view.context as Activity
73 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
74 | WindowCompat.getInsetsController(
75 | activity.window,
76 | view
77 | ).isAppearanceLightStatusBars = !darkTheme
78 | WindowCompat.getInsetsController(
79 | activity.window,
80 | view
81 | ).isAppearanceLightNavigationBars = !darkTheme
82 | }
83 | }
84 | }
85 |
86 | MaterialTheme(
87 | colorScheme = colorScheme,
88 | typography = Typography,
89 | content = content
90 | )
91 | }
92 |
--------------------------------------------------------------------------------
/app/src/main/java/com/bnyro/recorder/ui/common/ChipSelector.kt:
--------------------------------------------------------------------------------
1 | package com.bnyro.recorder.ui.common
2 |
3 | import android.view.SoundEffectConstants
4 | import androidx.compose.foundation.layout.Spacer
5 | import androidx.compose.foundation.layout.height
6 | import androidx.compose.foundation.layout.padding
7 | import androidx.compose.foundation.lazy.LazyRow
8 | import androidx.compose.foundation.lazy.itemsIndexed
9 | import androidx.compose.material.icons.Icons
10 | import androidx.compose.material.icons.filled.Check
11 | import androidx.compose.material3.ElevatedFilterChip
12 | import androidx.compose.material3.ExperimentalMaterial3Api
13 | import androidx.compose.material3.Icon
14 | import androidx.compose.material3.Text
15 | import androidx.compose.runtime.Composable
16 | import androidx.compose.ui.Alignment
17 | import androidx.compose.ui.Modifier
18 | import androidx.compose.ui.draw.scale
19 | import androidx.compose.ui.platform.LocalView
20 | import androidx.compose.ui.semantics.clearAndSetSemantics
21 | import androidx.compose.ui.semantics.contentDescription
22 | import androidx.compose.ui.semantics.heading
23 | import androidx.compose.ui.semantics.selected
24 | import androidx.compose.ui.semantics.semantics
25 | import androidx.compose.ui.text.font.FontWeight
26 | import androidx.compose.ui.unit.dp
27 | import androidx.compose.ui.unit.sp
28 |
29 | @OptIn(ExperimentalMaterial3Api::class)
30 | @Composable
31 | fun ChipSelector(
32 | title: String? = null,
33 | entries: ListPrivacy focused voice and screen recorder app built with MD3.
9 | 10 | 11 |
](https://f-droid.org/packages/com.bnyro.recorder/)
40 | [
](https://github.com/you-apps/RecordYou/releases)
41 |
42 |
48 |
49 |
50 |
51 |
64 |
65 |
66 | ## Credits
67 | * Icon design by [M00NJ](https://github.com/M00NJ)
68 |
69 | ## License
70 |
71 | Record You is licensed under the [**GNU General Public License**](https://www.gnu.org/licenses/gpl.html): You can use, study and share it as you want.
72 |
--------------------------------------------------------------------------------
/app/src/main/res/values-ro/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |