diff --git a/assets/translations/en.json b/assets/translations/en.json index 74cac9716..f4b8159bb 100644 --- a/assets/translations/en.json +++ b/assets/translations/en.json @@ -156,7 +156,6 @@ "selectFirstStationTitle": "Please select the first station", "longPressNotice": "Press and hold the screen to open the menu.", "autoAnnounceBackgroundTitle": "Enable background voice announcement", - "bgTtsUnavailableOnAndroid16": "Background playback is not available on Android 16 or later due to OS restrictions.", "loadingLocation": "Getting location information...", "loadingAPI": "Communicating with server...", "routeSearchTitle": "Find a route", diff --git a/assets/translations/ja.json b/assets/translations/ja.json index f374af68d..be8cfa737 100644 --- a/assets/translations/ja.json +++ b/assets/translations/ja.json @@ -157,7 +157,6 @@ "selectFirstStationTitle": "始発駅を選択してください", "longPressNotice": "画面を長押しするとメニューが開けます", "autoAnnounceBackgroundTitle": "バックグラウンド再生", - "bgTtsUnavailableOnAndroid16": "Android 16以降ではOSの制限によりバックグラウンド再生を利用できません。", "loadingLocation": "位置情報を取得中です", "loadingAPI": "サーバーと通信中です", "routeSearchTitle": "経路を検索", diff --git a/src/components/Permitted.tsx b/src/components/Permitted.tsx index 1020e1988..0169ed589 100644 --- a/src/components/Permitted.tsx +++ b/src/components/Permitted.tsx @@ -303,18 +303,11 @@ const PermittedLayout: React.FC = ({ children }: Props) => { enabled: speechEnabledStr === 'true', })); } - const isAndroid16OrHigher = - Platform.OS === 'android' && Number(Platform.Version) >= 36; if (bgTTSEnabledStr) { - const bgEnabled = bgTTSEnabledStr === 'true' && !isAndroid16OrHigher; setSpeech((prev) => ({ ...prev, - backgroundEnabled: bgEnabled, + backgroundEnabled: bgTTSEnabledStr === 'true', })); - // Android 16以上で保存値がtrueの場合、永続化もfalseに上書き - if (isAndroid16OrHigher && bgTTSEnabledStr === 'true') { - AsyncStorage.setItem(ASYNC_STORAGE_KEYS.BG_TTS_ENABLED, 'false'); - } } if (ttsEnabledLanguagesStr) { try { diff --git a/src/screens/TTSSettings.tsx b/src/screens/TTSSettings.tsx index d2f5f2392..b40e4f78e 100644 --- a/src/screens/TTSSettings.tsx +++ b/src/screens/TTSSettings.tsx @@ -1,11 +1,10 @@ import AsyncStorage from '@react-native-async-storage/async-storage'; import { useNavigation } from '@react-navigation/native'; import { useAtom, useAtomValue } from 'jotai'; -import React, { useCallback, useEffect, useMemo, useState } from 'react'; +import React, { useCallback, useMemo, useState } from 'react'; import { Alert, type GestureResponderEvent, - Platform, Pressable, StyleSheet, View, @@ -23,7 +22,6 @@ import Typography from '~/components/Typography'; import speechState from '~/store/atoms/speech'; import { isLEDThemeAtom } from '~/store/atoms/theme'; import { translate } from '~/translation'; -import { isDevApp } from '~/utils/isDevApp'; import { ASYNC_STORAGE_KEYS } from '../constants'; type SettingItem = { @@ -114,18 +112,6 @@ const TTSSettingsScreen: React.FC = () => { const navigation = useNavigation(); - // Android 16 (API 36) ではバックグラウンド音声再生が制限されるため無効化 - const isAndroid16OrHigher = - !isDevApp && Platform.OS === 'android' && Number(Platform.Version) >= 36; - - // Android 16以上ではバックグラウンド再生を強制的にfalseにする - useEffect(() => { - if (isAndroid16OrHigher && backgroundEnabled) { - setSpeechState((prev) => ({ ...prev, backgroundEnabled: false })); - AsyncStorage.setItem(ASYNC_STORAGE_KEYS.BG_TTS_ENABLED, 'false'); - } - }, [isAndroid16OrHigher, backgroundEnabled, setSpeechState]); - const SETTING_ITEMS: SettingItem[] = [ { id: 'enable_tts', @@ -335,16 +321,8 @@ const TTSSettingsScreen: React.FC = () => { isFirst={index === 0} isLast={index === SETTING_ITEMS.length - 1} onToggle={onToggle} - state={ - item.id === 'enable_bg_tts' && - (!speechEnabled || isAndroid16OrHigher) - ? false - : state - } - disabled={ - item.id === 'enable_bg_tts' && - (!speechEnabled || isAndroid16OrHigher) - } + state={item.id === 'enable_bg_tts' && !speechEnabled ? false : state} + disabled={item.id === 'enable_bg_tts' && !speechEnabled} /> ); }, @@ -353,7 +331,6 @@ const TTSSettingsScreen: React.FC = () => { handleToggleBgTTS, speechEnabled, backgroundEnabled, - isAndroid16OrHigher, SETTING_ITEMS.length, ] ); @@ -379,17 +356,6 @@ const TTSSettingsScreen: React.FC = () => { onScroll={handleScroll} ListFooterComponent={() => ( <> - {isAndroid16OrHigher ? ( - - {translate('bgTtsUnavailableOnAndroid16')} - - ) : null} {TTS_LANGUAGE_ITEMS.map((item, index) => { const state = ttsEnabledLanguages.includes(item.id);