Skip to content

Commit 4e005aa

Browse files
authored
TTS設定画面からAndroid 16判定ロジックを撤廃 (#5405)
1 parent ed70f20 commit 4e005aa

File tree

4 files changed

+4
-47
lines changed

4 files changed

+4
-47
lines changed

assets/translations/en.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,6 @@
156156
"selectFirstStationTitle": "Please select the first station",
157157
"longPressNotice": "Press and hold the screen to open the menu.",
158158
"autoAnnounceBackgroundTitle": "Enable background voice announcement",
159-
"bgTtsUnavailableOnAndroid16": "Background playback is not available on Android 16 or later due to OS restrictions.",
160159
"loadingLocation": "Getting location information...",
161160
"loadingAPI": "Communicating with server...",
162161
"routeSearchTitle": "Find a route",

assets/translations/ja.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,6 @@
157157
"selectFirstStationTitle": "始発駅を選択してください",
158158
"longPressNotice": "画面を長押しするとメニューが開けます",
159159
"autoAnnounceBackgroundTitle": "バックグラウンド再生",
160-
"bgTtsUnavailableOnAndroid16": "Android 16以降ではOSの制限によりバックグラウンド再生を利用できません。",
161160
"loadingLocation": "位置情報を取得中です",
162161
"loadingAPI": "サーバーと通信中です",
163162
"routeSearchTitle": "経路を検索",

src/components/Permitted.tsx

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -303,18 +303,11 @@ const PermittedLayout: React.FC<Props> = ({ children }: Props) => {
303303
enabled: speechEnabledStr === 'true',
304304
}));
305305
}
306-
const isAndroid16OrHigher =
307-
Platform.OS === 'android' && Number(Platform.Version) >= 36;
308306
if (bgTTSEnabledStr) {
309-
const bgEnabled = bgTTSEnabledStr === 'true' && !isAndroid16OrHigher;
310307
setSpeech((prev) => ({
311308
...prev,
312-
backgroundEnabled: bgEnabled,
309+
backgroundEnabled: bgTTSEnabledStr === 'true',
313310
}));
314-
// Android 16以上で保存値がtrueの場合、永続化もfalseに上書き
315-
if (isAndroid16OrHigher && bgTTSEnabledStr === 'true') {
316-
AsyncStorage.setItem(ASYNC_STORAGE_KEYS.BG_TTS_ENABLED, 'false');
317-
}
318311
}
319312
if (ttsEnabledLanguagesStr) {
320313
try {

src/screens/TTSSettings.tsx

Lines changed: 3 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
import AsyncStorage from '@react-native-async-storage/async-storage';
22
import { useNavigation } from '@react-navigation/native';
33
import { useAtom, useAtomValue } from 'jotai';
4-
import React, { useCallback, useEffect, useMemo, useState } from 'react';
4+
import React, { useCallback, useMemo, useState } from 'react';
55
import {
66
Alert,
77
type GestureResponderEvent,
8-
Platform,
98
Pressable,
109
StyleSheet,
1110
View,
@@ -23,7 +22,6 @@ import Typography from '~/components/Typography';
2322
import speechState from '~/store/atoms/speech';
2423
import { isLEDThemeAtom } from '~/store/atoms/theme';
2524
import { translate } from '~/translation';
26-
import { isDevApp } from '~/utils/isDevApp';
2725
import { ASYNC_STORAGE_KEYS } from '../constants';
2826

2927
type SettingItem = {
@@ -114,18 +112,6 @@ const TTSSettingsScreen: React.FC = () => {
114112

115113
const navigation = useNavigation();
116114

117-
// Android 16 (API 36) ではバックグラウンド音声再生が制限されるため無効化
118-
const isAndroid16OrHigher =
119-
!isDevApp && Platform.OS === 'android' && Number(Platform.Version) >= 36;
120-
121-
// Android 16以上ではバックグラウンド再生を強制的にfalseにする
122-
useEffect(() => {
123-
if (isAndroid16OrHigher && backgroundEnabled) {
124-
setSpeechState((prev) => ({ ...prev, backgroundEnabled: false }));
125-
AsyncStorage.setItem(ASYNC_STORAGE_KEYS.BG_TTS_ENABLED, 'false');
126-
}
127-
}, [isAndroid16OrHigher, backgroundEnabled, setSpeechState]);
128-
129115
const SETTING_ITEMS: SettingItem[] = [
130116
{
131117
id: 'enable_tts',
@@ -335,16 +321,8 @@ const TTSSettingsScreen: React.FC = () => {
335321
isFirst={index === 0}
336322
isLast={index === SETTING_ITEMS.length - 1}
337323
onToggle={onToggle}
338-
state={
339-
item.id === 'enable_bg_tts' &&
340-
(!speechEnabled || isAndroid16OrHigher)
341-
? false
342-
: state
343-
}
344-
disabled={
345-
item.id === 'enable_bg_tts' &&
346-
(!speechEnabled || isAndroid16OrHigher)
347-
}
324+
state={item.id === 'enable_bg_tts' && !speechEnabled ? false : state}
325+
disabled={item.id === 'enable_bg_tts' && !speechEnabled}
348326
/>
349327
);
350328
},
@@ -353,7 +331,6 @@ const TTSSettingsScreen: React.FC = () => {
353331
handleToggleBgTTS,
354332
speechEnabled,
355333
backgroundEnabled,
356-
isAndroid16OrHigher,
357334
SETTING_ITEMS.length,
358335
]
359336
);
@@ -379,17 +356,6 @@ const TTSSettingsScreen: React.FC = () => {
379356
onScroll={handleScroll}
380357
ListFooterComponent={() => (
381358
<>
382-
{isAndroid16OrHigher ? (
383-
<Typography
384-
style={{
385-
marginTop: 12,
386-
fontSize: 14,
387-
color: isLEDTheme ? '#ccc' : '#666',
388-
}}
389-
>
390-
{translate('bgTtsUnavailableOnAndroid16')}
391-
</Typography>
392-
) : null}
393359
<View style={{ marginTop: 16 }}>
394360
{TTS_LANGUAGE_ITEMS.map((item, index) => {
395361
const state = ttsEnabledLanguages.includes(item.id);

0 commit comments

Comments
 (0)