Commit 7ba55d3a authored by sheteng's avatar sheteng

资讯

parent 09b15c01
......@@ -118,4 +118,6 @@ dependencies {
implementation("com.github.bumptech.glide:glide:4.11.0")
annotationProcessor("com.github.bumptech.glide:compiler:4.11.0")
implementation("com.github.open-android:JieCaoVideoPlayer:0.1.0")
}
\ No newline at end of file
......@@ -24,6 +24,7 @@
<package android:name="com.tencent.mm" />
<package android:name="com.tencent.mobileqq" />
<package android:name="com.baidu.browser.apps" />
<package android:name="com.ldsanguo.shark" />
</queries>
<application
......
......@@ -2,6 +2,7 @@ package com.ccwangluo.accelerator.ui
import android.Manifest
import android.content.Intent
import android.hardware.Sensor
import android.os.Bundle
import android.os.Looper
import android.view.KeyEvent
......@@ -29,6 +30,9 @@ import com.tencent.tauth.Tencent
import com.umeng.socialize.UMShareAPI
import com.xuexiang.xpage.base.XPageActivity
import com.xuexiang.xpage.core.PageOption
import android.hardware.SensorManager
import android.hardware.SensorEventListener
import fm.jiecao.jcvideoplayer_lib.JCVideoPlayer
class MainActivity() : XPageActivity(), TencentLocationListener {
......@@ -41,6 +45,8 @@ class MainActivity() : XPageActivity(), TencentLocationListener {
private lateinit var accelertorViewModel: AccelertorViewModel
private var mSensorEventListener: SensorEventListener? = null
private var mSensorManager: SensorManager? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
accelertorViewModel =
......@@ -95,12 +101,37 @@ class MainActivity() : XPageActivity(), TencentLocationListener {
}
AcceleratorUtils.initConnect(this, connect)
mSensorManager = getSystemService(SENSOR_SERVICE) as SensorManager
mSensorEventListener = JCVideoPlayer.JCAutoFullscreenListener()
}
private fun initPhoneUtils() {
PhoneUtils.getPhoneInfo()
}
override fun onBackPressed() {
if (JCVideoPlayer.backPress()) {
return
}
super.onBackPressed()
}
override fun onResume() {
super.onResume()
val mSensor = mSensorManager?.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
mSensorManager?.registerListener(
mSensorEventListener,
mSensor,
SensorManager.SENSOR_DELAY_NORMAL
);
}
override fun onPause() {
super.onPause()
mSensorManager?.unregisterListener(mSensorEventListener);
JCVideoPlayer.releaseAllVideos();
}
override fun onStart() {
super.onStart()
AcceleratorUtils.onStart()
......@@ -135,10 +166,10 @@ class MainActivity() : XPageActivity(), TencentLocationListener {
}
override fun onLocationChanged(p0: TencentLocation?, p1: Int, p2: String?) {
if (p1 == 0){
p0?.province?.let {
AuthManager.area = it
}
if (p1 == 0) {
p0?.province?.let {
AuthManager.area = it
}
}
}
......
......@@ -178,11 +178,11 @@ class AccelertorFragment : XPageFragment() {
if (binding.expandableLayout1.isExpanded) {
binding.expandableLayout1.toggle()
binding.expandableLayout2.expand()
binding.btnExpendBg.setBackgroundResource(com.ccwangluo.accelerator.R.mipmap.quick_arrow_up)
binding.btnExpendBg.setBackgroundResource(R.mipmap.quick_arrow_up)
} else {
binding.expandableLayout1.expand()
binding.expandableLayout2.toggle()
binding.btnExpendBg.setBackgroundResource(com.ccwangluo.accelerator.R.mipmap.quick_arrow_down)
binding.btnExpendBg.setBackgroundResource(R.mipmap.quick_arrow_down)
}
}
binding.btnQuick.setOnClickListener {
......@@ -240,6 +240,12 @@ class AccelertorFragment : XPageFragment() {
}
binding.gameStart.setOnClickListener {
AcceleratorUtils.game?.let {
AppUtils.launchApp(it.packageName)
}
}
}
fun openToWebview(url: String) {
......@@ -283,6 +289,7 @@ class AccelertorFragment : XPageFragment() {
}).show<CommonDialog>()
SettingSPUtils.isFirstAccSuccess = false
}
binding.gameStart.visibility = View.VISIBLE
} else {
binding.gamePicIn1.clearAnimation()
if (binding.gamePicOut.background is AnimationDrawable) {
......@@ -290,6 +297,7 @@ class AccelertorFragment : XPageFragment() {
}
binding.accStateTx.visibility = View.GONE
binding.btnQuick.setBackgroundResource(R.mipmap.quick_start)
binding.gameStart.visibility = View.GONE
}
}
......
......@@ -5,7 +5,10 @@ import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.ViewModelProvider
import com.ccwangluo.accelerator.R
import com.ccwangluo.accelerator.adapter.KotlinDataAdapter
import com.ccwangluo.accelerator.databinding.FragmentNewsBinding
import com.ccwangluo.accelerator.model.News
import com.ccwangluo.accelerator.ui.news.NewsCollectionAdapter
import com.google.android.material.tabs.TabLayoutMediator
import com.xuexiang.xpage.base.XPageFragment
......@@ -20,6 +23,8 @@ class NewsFragment : XPageFragment() {
return null
}
var dataList = arrayListOf<String>()
override fun inflateView(inflater: LayoutInflater?, container: ViewGroup?): View {
_binding = FragmentNewsBinding.inflate(inflater!!, container, false)
newsViewModel = ViewModelProvider(requireActivity()).get(NewsViewModel::class.java)
......@@ -31,13 +36,20 @@ class NewsFragment : XPageFragment() {
override fun initViews() {
newsViewModel.refreshState.observe(this, {
if (!it) {
binding.refreshLayout.isRefreshing = false
}
})
binding.tvMarquee.addDisplayString("【公告】韩服 DNF已经开启预约啦,小伙伴…")
binding.tvMarquee.startRoll()
binding.gameNewsList.adapter = KotlinDataAdapter.Builder<String>()
.setData(dataList)
.setLayoutId(R.layout.item_news_game)
.addBindView{itemView, itemData ->
}.create()
adapter = NewsCollectionAdapter(this, titles)
binding.viewPager.adapter = adapter
TabLayoutMediator(binding.tabLayout, binding.viewPager) { tab, position ->
......@@ -48,12 +60,12 @@ class NewsFragment : XPageFragment() {
}
override fun initListeners() {
binding.refreshLayout.setOnRefreshListener {
adapter?.refresh(binding.viewPager.currentItem)
binding.refreshLayout.postDelayed({
binding.refreshLayout.isRefreshing = false
}, 2000)
}
// binding.refreshLayout.setOnRefreshListener {
// adapter?.refresh(binding.viewPager.currentItem)
// binding.refreshLayout.postDelayed({
// binding.refreshLayout.isRefreshing = false
// }, 2000)
// }
}
companion object {
......
......@@ -19,9 +19,9 @@ class NewsViewModel : ViewModel() {
fun freshData(position: String, gameId: Int, page: Int) {
val type = when (position) {
"0" -> ""
"1" -> "0"
"2" -> "1"
else -> 3
"1" -> 1
"2" -> 2
else -> position
}
viewModelScope.launch(Dispatchers.IO) {
val res =
......@@ -37,4 +37,6 @@ class NewsViewModel : ViewModel() {
}
}
\ No newline at end of file
package com.ccwangluo.accelerator.ui.news
import android.net.Uri
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import android.widget.VideoView
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
......@@ -19,7 +17,15 @@ import com.ccwangluo.accelerator.ui.news.NewsCollectionAdapter.Companion.ARG_OBJ
import com.ccwangluo.accelerator.utils.AcceleratorUtils
import com.xuexiang.xpage.base.XPageFragment
import com.xuexiang.xpage.utils.TitleBar
import com.xuexiang.xutil.app.AppUtils
import fm.jiecao.jcvideoplayer_lib.JCVideoPlayer
import android.graphics.Bitmap
import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard
import android.media.MediaMetadataRetriever
import com.ccwangluo.accelerator.model.NewsModel
import java.lang.IllegalArgumentException
class NewsObjectFragment : XPageFragment() {
var recycle_view: RecyclerView? = null
......@@ -30,15 +36,17 @@ class NewsObjectFragment : XPageFragment() {
private lateinit var newsViewModel: NewsViewModel
private val deviceList = arrayListOf<News>()
private val page = 1
private val dataList = arrayListOf<News>()
private var page = 1
private lateinit var position: String
private var newsModel: NewsModel? = null
override fun inflateView(inflater: LayoutInflater?, container: ViewGroup?): View {
newsViewModel = ViewModelProvider(this).get(NewsViewModel::class.java)
return inflater!!.inflate(R.layout.fragment_collection_object, container, false)
}
private var gameId = 0
override fun initViews() {
arguments?.takeIf { it.containsKey(ARG_OBJECT) }?.apply {
position = getInt(ARG_OBJECT).toString()
......@@ -46,13 +54,14 @@ class NewsObjectFragment : XPageFragment() {
val layoutManager = LinearLayoutManager(context)
recycle_view?.setLayoutManager(layoutManager)
val adapter = KotlinDataAdapter.Builder<News>()
.setData(deviceList)
.setData(dataList)
.setLayoutId(R.layout.item_dynamic)
.addBindView { itemView, itemData ->
val avatar = itemView.findViewById<ImageView>(R.id.avatar)
Glide.with(this@NewsObjectFragment).load(itemData.avatar).into(avatar)
itemView.findViewById<TextView>(R.id.nickname).setText(itemData.nickname)
itemView.findViewById<TextView>(R.id.createdDate).setText(itemData.createdDate)
itemView.findViewById<TextView>(R.id.createdDate)
.setText(itemData.createdDate?.substring(0, 10))
itemData.title?.let {
itemView.findViewById<TextView>(R.id.title).visibility = View.VISIBLE
itemView.findViewById<TextView>(R.id.title).setText(it)
......@@ -64,21 +73,32 @@ class NewsObjectFragment : XPageFragment() {
} ?: let {
itemView.findViewById<TextView>(R.id.abbrContent).visibility = View.GONE
}
// 资讯类型:0攻略 1视频
val imgs = itemView.findViewById<ImageView>(R.id.imgs)
val vedio = itemView.findViewById<VideoView>(R.id.video_view)
if (itemData.type == 0) {
itemData.imgs?.let {
imgs.visibility = View.VISIBLE
vedio.visibility = View.GONE
Glide.with(this@NewsObjectFragment).load(itemData.imgs).into(imgs)
}
} else if (itemData.type == 1) {
itemData.videoUrl?.let {
imgs.visibility = View.GONE
vedio.visibility = View.VISIBLE
vedio.setVideoURI(Uri.parse(it))
}
val vedio = itemView.findViewById<JCVideoPlayerStandard>(R.id.video_view)
vedio.backButton.visibility = View.GONE
vedio.tinyBackImageView.visibility = View.GONE
itemData.imgs?.let {
imgs.visibility = View.VISIBLE
vedio.visibility = View.GONE
Glide.with(this@NewsObjectFragment).load(itemData.imgs).into(imgs)
}
itemData.videoUrl?.let {
imgs.visibility = View.GONE
vedio.visibility = View.VISIBLE
vedio.setUp(
it, JCVideoPlayer.SCREEN_LAYOUT_LIST
)
Glide.with(this@NewsObjectFragment).load(getNetVideoBitmap(it))
.into(vedio.thumbImageView)
}
itemData.pageViews?.let {
itemView.findViewById<TextView>(R.id.pageViews).setText("${it}浏览")
}
itemData.greatNum?.let {
itemView.findViewById<TextView>(R.id.great_num).setText("${it}")
}
}
.create()
......@@ -86,27 +106,68 @@ class NewsObjectFragment : XPageFragment() {
AcceleratorUtils.getGameList(this@NewsObjectFragment) {
if (it) {
AcceleratorUtils.game?.let {
gameId = it.id
newsViewModel.freshData(position, it.id, page)
}
}
}
recycle_view?.addOnScrollListener(object : RecyclerView.OnScrollListener() {
override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
super.onScrollStateChanged(recyclerView, newState)
}
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
super.onScrolled(recyclerView, dx, dy)
if (isSlideToBottom(recyclerView)) {
newsModel?.let {
if (dataList.size < it.total) {
page++
newsViewModel.freshData(position, gameId, page)
}
}
}
}
})
}
newsViewModel.newsModel.observe(this, {
deviceList.addAll(it.list)
newsModel = it
dataList.addAll(it.list)
recycle_view?.adapter?.notifyDataSetChanged()
})
}
protected fun isSlideToBottom(recyclerView: RecyclerView?): Boolean {
if (recyclerView == null) return false
return if (recyclerView.computeVerticalScrollExtent() + recyclerView.computeVerticalScrollOffset() >= recyclerView.computeVerticalScrollRange()) true else false
}
fun getNetVideoBitmap(videoUrl: String?): Bitmap? {
var bitmap: Bitmap? = null
val retriever = MediaMetadataRetriever()
try {
//根据url获取缩略图
retriever.setDataSource(videoUrl, HashMap())
//获得第一帧图片
bitmap = retriever.frameAtTime
} catch (e: IllegalArgumentException) {
e.printStackTrace()
} finally {
retriever.release()
}
return bitmap
}
override fun initListeners() {
}
fun refresh() {
recycle_view?.postDelayed({
AcceleratorUtils.game?.let {
newsViewModel.freshData(position, it.id, page)
}
}, 1000)
AcceleratorUtils.game?.let {
gameId = it.id
page = 1
newsViewModel.freshData(position, it.id, page)
}
}
}
\ No newline at end of file
......@@ -15,6 +15,10 @@ import com.karumi.dexter.listener.multi.MultiplePermissionsListener
import com.xuexiang.xpage.base.XPageFragment
import com.xuexiang.xutil.app.AppUtils
import com.xuexiang.xutil.system.PermissionUtils
import android.content.Intent
import android.net.Uri
import com.hjq.toast.ToastUtils
import java.lang.Exception
/**
......@@ -186,4 +190,26 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb)
.quickCallJs(callback, AppUtils.getAppVersionName(), AppUtils.getAppVersionCode().toString())
}
/****************
*
* 发起添加群流程。
* 调用 joinQQGroup(09Gg-vMtnaIfgr-slk1pOkjVIFmjI79U)
*/
@JavascriptInterface
fun joinQQGroup(url: String) {
val intent = Intent()
intent.data =
Uri.parse(url)
// 此Flag可根据具体产品需要自定义,如设置,则在加群界面按返回,返回手Q主界面,不设置,按返回会返回到呼起产品界面 //
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
try {
xPageFragment.startActivity(intent)
} catch (e: Exception) {
// 未安装手Q或安装的版本不支持
ToastUtils.show("未安装手Q或安装的版本不支持")
}
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:id="@+id/recycle_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
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">
......
<?xml version="1.0" encoding="utf-8"?>
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.coordinatorlayout.widget.CoordinatorLayout 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:id="@+id/refresh_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black"
android:orientation="vertical">
android:background="@color/white">
<LinearLayout
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar"
android:background="@color/white"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="36dp"
android:gravity="center_horizontal"
android:text="地下城与勇士 韩服"
android:textColor="#FFFFFFFF"
android:textSize="16sp" />
<com.xuexiang.xui.widget.layout.XUILinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="16dp"
android:background="@color/white"
android:orientation="vertical"
app:xui_hideRadiusSide="bottom"
app:xui_radius="10dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="21dp"
android:orientation="horizontal">
<LinearLayout
android:layout_width="wrap_content"
<TextView
app:layout_scrollFlags="scroll|exitUntilCollapsed"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:orientation="vertical">
<ImageView
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_gravity="center_horizontal"
android:background="@mipmap/game_download" />
<TextView
android:layout_width="70dp"
android:layout_height="20dp"
android:layout_marginTop="8dp"
android:gravity="center"
android:text="游戏下载"
android:textColor="#FF3B3B3B"
android:textSize="14sp" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:background="@mipmap/new_top"
android:gravity="center"
android:paddingTop="36dp"
android:paddingBottom="16dp"
android:text="地下城与勇士 韩服"
android:textColor="#FFFFFFFF"
android:textSize="16sp"
app:layout_collapseMode="pin" />
<androidx.recyclerview.widget.RecyclerView
app:layout_scrollFlags="scroll|exitUntilCollapsed"
android:id="@+id/game_news_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:orientation="vertical">
android:layout_marginTop="21dp"
android:background="@color/white"
android:orientation="horizontal"
app:layout_collapseMode="parallax">
<ImageView
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_gravity="center_horizontal"
android:background="@mipmap/game_group" />
<TextView
android:layout_width="70dp"
android:layout_height="20dp"
android:layout_marginTop="8dp"
android:gravity="center"
android:text="万能宝藏群"
android:textColor="#FF3B3B3B"
android:textSize="14sp" />
</LinearLayout>
</androidx.recyclerview.widget.RecyclerView>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_scrollFlags="noScroll"
android:layout_width="match_parent"
android:layout_height="20dp"
android:layout_marginLeft="20dp"
android:orientation="vertical">
android:layout_marginTop="21dp"
android:layout_marginRight="20dp"
app:layout_collapseMode="parallax">
<ImageView
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_gravity="center_horizontal"
android:background="@mipmap/game_google" />
<TextView
android:layout_width="70dp"
android:layout_height="20dp"
android:layout_marginTop="8dp"
android:layout_width="17.95dp"
android:layout_height="14.6dp"
android:layout_gravity="center_vertical"
android:background="@mipmap/icon_notice" />
<com.xuexiang.xui.widget.textview.MarqueeTextView
android:id="@+id/tv_marquee"
android:layout_width="299dp"
android:layout_height="wrap_content"
android:layout_marginLeft="3dp"
android:gravity="center"
android:text="谷歌套件"
android:textColor="#FF3B3B3B"
android:textSize="14sp" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="20dp"
android:layout_marginLeft="20dp"
android:layout_marginTop="21dp"
android:layout_marginRight="20dp">
android:text=""
android:textColor="#FF1A1A1A"
android:textSize="14sp"
app:mtv_isAutoDisplay="true"
app:mtv_isAutoFit="true" />
<ImageView
android:layout_width="17.95dp"
android:layout_height="14.6dp"
android:layout_gravity="center_vertical"
android:background="@mipmap/icon_notice" />
</LinearLayout>
<com.xuexiang.xui.widget.textview.MarqueeTextView
android:id="@+id/tv_marquee"
android:layout_width="299dp"
android:layout_height="wrap_content"
android:layout_marginLeft="3dp"
android:gravity="center"
android:text=""
android:textColor="#FF1A1A1A"
android:textSize="14sp"
app:mtv_isAutoDisplay="true"
app:mtv_isAutoFit="true" />
</com.google.android.material.appbar.AppBarLayout>
</LinearLayout>
<com.google.android.material.tabs.TabLayout
android:id="@+id/tab_layout"
style="@style/MyTablayoutstyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
app:tabBackground="@null"
app:tabRippleColor="@null"/>
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<com.google.android.material.tabs.TabLayout
android:id="@+id/tab_layout"
style="@style/MyTablayoutstyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
app:tabBackground="@null"
app:tabRippleColor="@null" />
</com.xuexiang.xui.widget.layout.XUILinearLayout>
</LinearLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
\ No newline at end of file
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
......@@ -70,7 +70,6 @@
android:layout_height="wrap_content">
<ImageView
android:id="@+id/game_pic_out"
android:layout_width="250dp"
......@@ -109,7 +108,7 @@
app:cpv_end_progress="99"
app:cpv_isFilled="false"
app:cpv_isTracked="true"
app:cpv_progress_duration="2000"
app:cpv_progress_duration="1500"
app:cpv_progress_textColor="#8BE7FA"
app:cpv_progress_textSize="50sp"
app:cpv_progress_textVisibility="false"
......@@ -126,35 +125,43 @@
android:layout_centerInParent="true"
android:background="#77000000"
android:gravity="center"
android:visibility="gone"
android:orientation="horizontal"
android:visibility="gone"
app:xui_borderColor="@color/transparent"
app:xui_outerNormalColor="@color/transparent"
app:xui_radius="190dp"
app:xui_showBorderOnlyBeforeL="false">
<LinearLayout
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/progress"
android:text="0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
android:textColor="#8BE7FA"
android:textSize="70sp"
/>
android:textSize="70sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#8BE7FA"
android:text="%"
android:textSize="25sp"
/>
android:textColor="#8BE7FA"
android:textSize="25sp" />
</LinearLayout>
</com.xuexiang.xui.widget.layout.XUILinearLayout>
<ImageView
android:id="@+id/game_start"
android:visibility="gone"
android:layout_width="190dp"
android:layout_height="190dp"
android:layout_centerInParent="true"
android:background="@mipmap/game_start_btn" />
<com.xuexiang.xui.widget.layout.XUILinearLayout
android:id="@+id/quick_top_toast"
......@@ -163,8 +170,8 @@
android:layout_centerHorizontal="true"
android:background="#FF151721"
android:gravity="center"
android:visibility="gone"
android:orientation="horizontal"
android:visibility="gone"
app:xui_radius="10dp">
<ImageView
......@@ -647,7 +654,7 @@
android:textSize="14sp" />
<com.xuexiang.xui.widget.button.roundbutton.RoundButton
android:id="@+id/prevent_acc_invalid"
android:id="@+id/prevent_acc_invalid"
android:layout_width="70dp"
android:layout_height="25dp"
android:gravity="center"
......@@ -716,14 +723,14 @@
android:textSize="16sp" />
<TextView
android:visibility="gone"
android:id="@+id/pre_delay1_unit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="ms"
android:textColor="#FF94949B"
android:textSize="12sp" />
android:textSize="12sp"
android:visibility="gone" />
</LinearLayout>
</LinearLayout>
......@@ -765,14 +772,14 @@
android:textSize="16sp" />
<TextView
android:visibility="gone"
android:id="@+id/net_delay1_unit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="ms"
android:textColor="#FF94949B"
android:textSize="12sp" />
android:textSize="12sp"
android:visibility="gone" />
</LinearLayout>
</LinearLayout>
......@@ -815,14 +822,14 @@
android:textSize="16sp" />
<TextView
android:visibility="gone"
android:id="@+id/net_lost1_unit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="%"
android:textColor="#FF94949B"
android:textSize="12sp" />
android:textSize="12sp"
android:visibility="gone" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
......
......@@ -2,11 +2,12 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:orientation="vertical">
<FrameLayout
android:layout_marginTop="30dp"
android:id="@+id/common_webview"
android:layout_marginBottom="50dp"
android:layout_width="match_parent"
android:layout_height="match_parent" />
......
......@@ -56,7 +56,8 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="DNF合金战士怎么还没出?智慧的引导和奥兹玛怎么进?"
android:maxLines="2"
android:ellipsize="end"
android:textColor="#FF000000"
android:textSize="14sp" />
......@@ -65,7 +66,8 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:text="DNF合金战士怎么还没出?智慧的引导和奥兹玛怎么进?智慧的引导和奥兹玛怎么进?智慧的引导和奥兹玛怎么进…"
android:maxLines="3"
android:ellipsize="end"
android:textColor="#FF4A4A4A"
android:textSize="14sp" />
......@@ -76,7 +78,7 @@
android:layout_marginTop="12.65dp"
android:visibility="gone" />
<VideoView
<fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard
android:id="@+id/video_view"
android:layout_width="match_parent"
android:layout_height="182.5dp"
......@@ -90,13 +92,14 @@
android:layout_marginBottom="11dp">
<TextView
android:id="@+id/pageViews"
android:layout_width="57.5dp"
android:layout_height="15dp"
android:text="1502次浏览"
android:textColor="#FFB4B4B4"
android:textSize="11sp" />
<TextView
android:id="@+id/great_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
......@@ -107,6 +110,7 @@
android:textSize="14sp" />
<ImageView
android:id="@+id/great_img"
android:layout_width="14dp"
android:layout_height="14dp"
android:layout_alignParentRight="true"
......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:orientation="vertical">
<ImageView
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_gravity="center_horizontal"
android:background="@mipmap/game_download" />
<TextView
android:layout_width="70dp"
android:layout_height="20dp"
android:layout_marginTop="8dp"
android:gravity="center"
android:text="游戏下载"
android:textColor="#FF3B3B3B"
android:textSize="14sp" />
</LinearLayout>
......@@ -10,6 +10,7 @@ object HttpConfig {
* 主页h5
*/
val UI_MAIN_URL = "https://test-cc-tt-front.orangenet.org.cn/#"
// val UI_MAIN_URL = "http://10.3.0.217:8080/#"
//隐私协议地址
val privacy_url = "http:wwww.baidu.com"
......
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2019 by Max Lv <max.c.lv@gmail.com>
Copyright (C) 2019 by Mygod Studio <contact-shadowsocks-android@mygod.be>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
DO NOT EDIT: This file was automagically generated by script.
If you are looking for contributing a translation, read this:
https://discourse.shadowsocks.org/t/poeditor-translation-main-thread/30
-->
<resources>
<string name="quick_toggle">"تغيير"</string>
<string name="remote_dns">"سيرفر ال DNS"</string>
<string name="stat_summary">"ارسل: \t%3$s\t↑\t%1$s
استقبل: \t%4$s\t↓\t%2$s"</string>
<string name="connection_test_testing">"اختبار الاتصال…"</string>
<string name="connection_test_error">"فشل فحص اتصال الانترنت: %s"</string>
<string name="connection_test_fail">"لا يوجد اتصال بالانترنت"</string>
<string name="connection_test_error_status_code">"خطآ رقم: #%d"</string>
<string name="proxy">"السيرفر"</string>
<string name="remote_port">"المنفذ"</string>
<string name="sitekey">"كلمة المرور"</string>
<string name="enc_method">"طريقة التشفير"</string>
</resources>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2019 by Max Lv <max.c.lv@gmail.com>
Copyright (C) 2019 by Mygod Studio <contact-shadowsocks-android@mygod.be>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
DO NOT EDIT: This file was automagically generated by script.
If you are looking for contributing a translation, read this:
https://discourse.shadowsocks.org/t/poeditor-translation-main-thread/30
-->
<resources>
<string name="quick_toggle">"Alternar"</string>
<string name="remote_dns">"DNS Remoto"</string>
<string name="stat_summary">"Enviado: \t\t\t\t\t%3$s\t↑\t%1$s
Recibido: \t%4$s\t↓\t%2$s"</string>
<string name="connection_test_testing">"Probando…"</string>
<string name="connection_test_available">"Éxito: El establecimiento de la comunicación HTTPS tomó %dms"</string>
<string name="connection_test_error">"Fallo al detectar conexión a Internet: %s"</string>
<string name="connection_test_fail">"Internet no disponible"</string>
<string name="connection_test_error_status_code">"Código de error: #%d"</string>
<!-- proxy category -->
<string name="profile_name">"Nombre de Perfil"</string>
<string name="proxy">"Servidor"</string>
<string name="remote_port">"Puerto Remoto"</string>
<string name="sitekey">"Contraseña"</string>
<string name="enc_method">"Método de Cifrado"</string>
<!-- feature category -->
<string name="ipv6">"Ruta IPv6"</string>
<string name="ipv6_summary">"Redireccionar tráfico IPv6 a ruta"</string>
<string name="route_list">"Ruta"</string>
<string name="route_entry_gfwlist">"Lista GFW"</string>
<string name="proxied_apps">"Apps en modo VPN"</string>
<string name="proxied_apps_summary">"Configurar modo VPN para las apps seleccionadas"</string>
<string name="on">"Encendido"</string>
<!-- Fuzzy -->
<string name="bypass_apps">"Modo Bypass"</string>
<string name="auto_connect">"Conexión Automática"</string>
<!-- Fuzzy -->
<string name="auto_connect_summary">"Activar Shadowsocks al iniciar"</string>
<string name="tcp_fastopen_summary_unsupported">"Versión del Núcleo sin soporte: %s &lt; 3.7.1"</string>
<string name="udp_dns">"Enviar DNS sobre UDP"</string>
<!-- notification category -->
<string name="forward_success">"Shadowsocks inició."</string>
<string name="invalid_server">"Nombre de servidor inválido"</string>
<string name="service_failed">"Fallo al conectar al servidor remoto"</string>
<string name="stop">"Detener"</string>
<string name="stopping">"Apagando…"</string>
<string name="reboot_required">"Fallo al iniciar servicio VPN. Puede que tengas que reiniciar tu dispositivo."</string>
<string name="profile_invalid_input">"No se ha encontrado datos de perfil válidos."</string>
<!-- alert category -->
<string name="profile_empty">"Por favor selecciona un perfil"</string>
<string name="proxy_empty">"Proxy/Contraseña no deberían estar vacíos"</string>
<string name="connect">"Conectar"</string>
<!-- menu category -->
<string name="profiles">"Perfiles"</string>
<string name="settings">"Preferencias"</string>
<string name="faq">"FAQ"</string>
<string name="about">"Acerca de"</string>
<string name="edit">"Editar"</string>
<string name="share">"Compartir"</string>
<string name="add_profile">"Agregar Perfil"</string>
<string name="action_apply_all">"Aplicar preferencias a todos los Perfiles"</string>
<string name="action_export">"Exportar a portapapeles"</string>
<string name="action_import">"Importar desde portapapeles"</string>
<string name="action_export_msg">"¡Exportado satisfactoriamente!"</string>
<string name="action_export_err">"Fallo al exportar."</string>
<string name="action_import_msg">"¡Importado satisfactoriamente!"</string>
<string name="action_import_err">"Fallo al importar."</string>
<!-- profile -->
<string name="profile_config">"Configuración de Perfil"</string>
<string name="delete">"Remover"</string>
<string name="delete_confirm_prompt">"¿Estás seguro de querer remover este perfil?"</string>
<!-- Fuzzy -->
<string name="share_qr_nfc">"Código QR/NFC"</string>
<string name="add_profile_dialog">"Agregar este Perfil Shadowsocks?"</string>
<string name="add_profile_methods_scan_qr_code">"Escanear código QR"</string>
<plurals name="removed">
<item quantity="one">"Removido"</item>
<item quantity="other">"%d elementos removidos"</item>
</plurals>
<string name="undo">"Deshacer"</string>
<!-- tasker -->
<string name="toggle_service_state">"Iniciar el servicio"</string>
<string name="start_service_default">"Conectar al servidor actual"</string>
<string name="start_service">"Conectar a %s"</string>
<string name="stop_service">"Cambiar a %s"</string>
<string name="profile_default">"Usar el perfil actual"</string>
<!-- status -->
<string name="sent">"Enviado:"</string>
<string name="received">"Recibido:"</string>
<!-- status -->
<string name="connecting">"Conectando…"</string>
<string name="vpn_connected">"Conectado, presiona para verificar la conexión"</string>
<string name="not_connected">"No conectado"</string>
<!-- acl -->
<string name="custom_rules">"Reglas personalizadas"</string>
<string name="action_add_rule">"Agregar regla(s)…"</string>
<string name="edit_rule">"Editar regla"</string>
<string name="route_entry_all">"Todo"</string>
<!-- plugin -->
<string name="plugin">"Complemento"</string>
<string name="plugin_configure">"Configurar…"</string>
<string name="plugin_disabled">"Deshabilitado"</string>
<string name="plugin_unknown">"Complemento desconocido %s"</string>
<string name="plugin_untrusted">"Precaución: Este complemento no parece venir de una fuente confiable."</string>
<string name="profile_plugin">"Complemento: %s"</string>
<string name="add_profile_scanner_permission_required">"Se requiere permiso de cámara para escanear códigos QR."</string>
<!-- notification category -->
<string name="service_vpn">"Servicio VPN"</string>
<string name="add_profile_methods_manual_settings">"Configuración manual"</string>
<!-- misc -->
<string name="advanced">"Avanzado"</string>
<!-- misc -->
<string name="service_mode">"Modo de servicio"</string>
<string name="service_mode_proxy">"Sólo Proxy"</string>
<string name="service_mode_vpn">"VPN"</string>
<string name="port_proxy">"Puerto proxy SOCKS5"</string>
<string name="port_local_dns">"Puerto DNS local"</string>
<string name="service_proxy">"Servicio Proxy"</string>
<string name="service_transproxy">"Servicio Transproxy"</string>
<string name="vpn_permission_denied">"Permiso denegado al crear servicio VPN"</string>
<string name="direct_boot_aware_summary">"La información del perfil seleccionado será menos protegida"</string>
<string name="action_import_file">"Importar desde archivo…"</string>
<string name="night_mode">"Modo nocturno"</string>
<string name="night_mode_system">"Seguir sistema"</string>
<string name="night_mode_auto">"Auto"</string>
<string name="night_mode_on">"Encendido"</string>
<string name="night_mode_off">"Apagado"</string>
<string name="send_email">"Enviar email"</string>
<string name="action_export_more">"Exportar…"</string>
<string name="action_export_file">"Exportar a archivo…"</string>
<string name="share_over_lan">"Compartir por LAN"</string>
<string name="connection_test_pending">"Verificar conectividad"</string>
<string name="file_manager_missing">"Por favor, instala un explorador de archivos como MiXplorer"</string>
<string name="action_replace_file">"Reemplazar desde archivo…"</string>
</resources>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2019 by Max Lv <max.c.lv@gmail.com>
Copyright (C) 2019 by Mygod Studio <contact-shadowsocks-android@mygod.be>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
DO NOT EDIT: This file was automagically generated by script.
If you are looking for contributing a translation, read this:
https://discourse.shadowsocks.org/t/poeditor-translation-main-thread/30
-->
<resources>
<string name="app_name">"شدوساکس"</string>
<string name="remote_dns">"دی‌ان‌اس سرور"</string>
<string name="connection_test_testing">"در حال آزمایش…"</string>
<string name="connection_test_fail">"ارتباط با اینترنت فراهم نیست"</string>
<!-- proxy category -->
<string name="profile_name">"نام پروفایل"</string>
<string name="proxy">"سرور"</string>
<string name="remote_port">"پورت سرور"</string>
<string name="sitekey">"کلمه عبور"</string>
<string name="enc_method">"طریقه رمزگذاری"</string>
<!-- feature category -->
<string name="ipv6">"مسیر IPv6"</string>
<string name="ipv6_summary">"ترافیک IPv6 را به سرور هدایت کن"</string>
<string name="route_list">"روت"</string>
<string name="route_entry_gfwlist">"فهرست فیلترینگ"</string>
<string name="proxied_apps">"حالت "</string>
<string name="proxied_apps_summary">"تنظیم حالت وی‌پی‌ان برای اپلیکیشن‌های انتخاب شده"</string>
<string name="on">"روشن"</string>
<!-- Fuzzy -->
<string name="bypass_apps">"حالت صرف‌نظر"</string>
<string name="bypass_apps_summary">"این اپلیکیشن‌ها از وی‌پی‌ان استفاده نکنند"</string>
<string name="auto_connect">"وصل‌شدن اتوماتیک"</string>
<!-- Fuzzy -->
<string name="auto_connect_summary">"فعال‌شدن شدوساکس لحظه روشن‌شدن گوشی"</string>
<!-- Fuzzy -->
<string name="udp_dns">"ارسال دی‌ان‌اس"</string>
<!-- Fuzzy -->
<string name="udp_dns_summary">"ارسال کلیه درخواست‌های دی‌ان‌اس به سرور "</string>
<!-- notification category -->
<string name="forward_success">"شدوساکس فعال شد."</string>
<string name="invalid_server">"آدرس سرور نامعتبر است"</string>
<string name="service_failed">"اتصال به سرور ناموفق بود!"</string>
<string name="stop">"غیرفعال‌کردن"</string>
<string name="stopping">"در حال قطع‌کردن اتصال…"</string>
<string name="reboot_required">"راه‌اندازی سرویس وی‌پی‌ان ناموفق بود. شاید مشکل با روشن خاموش کردن دستگاه حل شود."</string>
<string name="profile_invalid_input">"هیچ پروفایل معتبری یافت نشد!"</string>
<!-- alert category -->
<string name="profile_empty">"لطفا یک پروفایل انتخاب کنید."</string>
<string name="proxy_empty">"پروکسی یا کلمه عبور نباید خالی باشند!"</string>
<string name="connect">"اتصال"</string>
<!-- menu category -->
<string name="profiles">"پروفایل‌ها"</string>
<string name="settings">"تنظیمات"</string>
<string name="faq">"سوالات متداول"</string>
<string name="about">"درباره ما"</string>
<string name="edit">"ویرایش"</string>
<string name="share">"به اشتراک گذاری"</string>
<string name="add_profile">"افزودن پروفایل"</string>
<string name="action_apply_all">"اعمال تنظیمات برای همه پروفایل‌ها"</string>
<string name="action_export">"صدور به کلیپ بورد"</string>
<string name="action_import">"ورود از کلیپ بورد"</string>
<string name="action_export_msg">"صدور موفقیت‌آمیز!"</string>
<string name="action_export_err">"صدور ناموفق."</string>
<string name="action_import_msg">"ورود موفقیت‌آمیز"</string>
<string name="action_import_err">"ورود ناموفق."</string>
<!-- profile -->
<string name="profile_config">"تنظیمات پروفایل"</string>
<string name="delete">"حذف"</string>
<string name="delete_confirm_prompt">"آیا مطمئن هستید که می‌خواهید این پروفایل را حذف کنید؟"</string>
<!-- Fuzzy -->
<string name="share_qr_nfc">"NFC یا QR Code"</string>
<string name="add_profile_dialog">"این پروفایل اضافه شود؟"</string>
<string name="add_profile_methods_scan_qr_code">"اسکن‌کردن QR Code"</string>
<string name="undo">"بازگرداندن"</string>
<!-- tasker -->
<string name="toggle_service_state">"فعال‌کردن سرویس"</string>
<string name="start_service_default">"وصل‌شدن به سرور فعلی"</string>
<string name="start_service">"وصل شدن به "</string>
<string name="profile_default">"استفاده از پروفایل فعلی"</string>
<!-- status -->
<string name="sent">"فرستاده‌شده:"</string>
<string name="received">"دریافت‌شده:"</string>
<!-- status -->
<string name="connecting">"در حال اتصال…"</string>
<string name="vpn_connected">"وصل شد. برای بررسی اتصال ضربه (Tap) بزنید."</string>
<string name="not_connected">"اتصال برقرار نیست!"</string>
<!-- acl -->
<string name="custom_rules">"قواعد دلخواه"</string>
<string name="action_add_rule">"اضافه کردن قواعد"</string>
<string name="edit_rule">"ویرایش قواعد"</string>
<string name="route_entry_all">"همه"</string>
<string name="route_entry_bypass_lan">"صرف‌نظر کردن از شبکه داخلی"</string>
<string name="route_entry_bypass_chn">"صرف‌نظر کردن از سایت‌های داخل ایران"</string>
<string name="route_entry_bypass_lan_chn">"صرف‌نظر کردن از شبکه داخلی و سایت‌های داخل ایران"</string>
<string name="route_entry_chinalist">"فهرست ایران"</string>
<string name="plugin_configure">"تنظیم"</string>
<string name="plugin_disabled">"خاموش"</string>
<string name="add_profile_scanner_permission_required">"مجوز دوربین برای اسکن کردن کد QR مورد نیاز است."</string>
<!-- notification category -->
<string name="service_vpn">"سرویس وی‌پی‌ان"</string>
<string name="add_profile_methods_manual_settings">"تنظیمات دستی"</string>
<!-- misc -->
<string name="advanced">"پیشرفته"</string>
<!-- misc -->
<string name="service_mode">"وضعیت سرویس"</string>
<string name="service_mode_proxy">"فقط پروکسی"</string>
<string name="service_mode_vpn">"وی‌پی‌ان"</string>
<string name="service_mode_transproxy">"ترانس‌پروکسی"</string>
<string name="port_proxy">"پورت پروکسی SOCKS5"</string>
<string name="port_local_dns">"پورت دی‌ان‌اس محلی"</string>
<string name="port_transproxy">"پورت ترانس‌پروکسی"</string>
<string name="service_proxy">"سرویس پروکسی"</string>
<string name="service_transproxy">"سرویس ترانس‌پروکسی"</string>
<string name="vpn_permission_denied">"مجوز برای ساخت وی‌پی‌ان فراهم نیست"</string>
<string name="auto_connect_summary_v24">"شدوساکس را از ابتدا فعال کن. توصیه می‌شود که به جای این گزینه از گزینه always-on vpn استفاده شود"</string>
<string name="action_import_file">"ورودی از فایل…"</string>
</resources>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2019 by Max Lv <max.c.lv@gmail.com>
Copyright (C) 2019 by Mygod Studio <contact-shadowsocks-android@mygod.be>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
DO NOT EDIT: This file was automagically generated by script.
If you are looking for contributing a translation, read this:
https://discourse.shadowsocks.org/t/poeditor-translation-main-thread/30
-->
<resources>
<string name="quick_toggle">"Basculer"</string>
<string name="remote_dns">"DNS Distant"</string>
<string name="stat_summary">"Envoyé : \t%3$s\t↑\t%1$s
Reçu : \t\t\t%4$s\t↓\t%2$s"</string>
<string name="connection_test_testing">"Essai…"</string>
<string name="connection_test_available">"Succès : le handshake HTTPS a pris %dms"</string>
<string name="connection_test_error">"Impossible de détecter la connexion Internet :%s"</string>
<string name="connection_test_fail">"Internet Indisponible"</string>
<string name="connection_test_error_status_code">"Code de l'Erreur : #%d"</string>
<!-- proxy category -->
<string name="profile_name">"Nom du Profil"</string>
<string name="proxy">"Serveur"</string>
<string name="remote_port">"Port Distant"</string>
<string name="sitekey">"Mot de passe"</string>
<string name="enc_method">"Méthode d'Encryption"</string>
<!-- feature category -->
<string name="ipv6">"Route IPv6"</string>
<string name="ipv6_summary">"Rediriger le trafic IPv6 vers le serveur distant"</string>
<string name="route_list">"Route"</string>
<string name="route_entry_gfwlist">"Liste GFW"</string>
<string name="proxied_apps">"Mode VPN Apps"</string>
<string name="proxied_apps_summary">"Configurer le mode VPN pour les applications sélectionnées"</string>
<string name="on">"Activé"</string>
<!-- Fuzzy -->
<string name="bypass_apps">"Mode exclusion"</string>
<string name="bypass_apps_summary">"Activer cette option pour exclure les applications sélectionnées"</string>
<string name="auto_connect">"Connection auto"</string>
<!-- Fuzzy -->
<string name="auto_connect_summary">"Activer Shadowsocks au démarrage"</string>
<!-- Fuzzy -->
<string name="tcp_fastopen_summary">"Activer nécessite la permission ROOT"</string>
<string name="tcp_fastopen_summary_unsupported">"Version du noyau non supportée : %s &lt;3.7.1"</string>
<!-- Fuzzy -->
<string name="udp_dns_summary">"Faire suivre toutes les requêtes DNS au serveur distant"</string>
<!-- notification category -->
<string name="forward_success">"Shadowsocks a démarré"</string>
<string name="invalid_server">"Nom de serveur invalide"</string>
<string name="service_failed">"Échec de la connexion au serveur distant"</string>
<string name="stop">"Stopper"</string>
<string name="stopping">"Arrêt en cours…"</string>
<string name="reboot_required">"Impossible de démarrer le service VPN. Vous devrez peut-être redémarrer votre appareil."</string>
<string name="profile_invalid_input">"Pas de donnée de profil valide trouvée."</string>
<!-- alert category -->
<string name="profile_empty">"Veuillez sélectionner un profil"</string>
<string name="proxy_empty">"Le mot de passe/proxy ne doit pas être vide"</string>
<string name="connect">"Connexion"</string>
<!-- menu category -->
<string name="profiles">"Profils"</string>
<string name="settings">"Paramètres"</string>
<string name="about">"À propos"</string>
<string name="edit">"Éditer"</string>
<string name="share">"Partager"</string>
<string name="add_profile">"Ajouter un Profil"</string>
<string name="action_apply_all">"Appliquer les Paramètres à tous les Profils"</string>
<string name="action_export">"Exporter vers le presse-papiers"</string>
<string name="action_import">"Importer depuis le presse-papiers"</string>
<string name="action_export_msg">"Exporté avec succès !"</string>
<string name="action_export_err">"Échec de l'exportation"</string>
<string name="action_import_msg">"Importé avec succès !"</string>
<string name="action_import_err">"Échec de l’importation."</string>
<!-- profile -->
<string name="profile_config">"Config profil"</string>
<string name="delete">"Supprimer"</string>
<string name="delete_confirm_prompt">"Êtes-vous sûr de vouloir supprimer ce profil?"</string>
<!-- Fuzzy -->
<string name="share_qr_nfc">"QR Code/NFC"</string>
<string name="add_profile_dialog">"Ajouter ce profil Shadowsocks?"</string>
<string name="add_profile_methods_scan_qr_code">"Scanner le QR Code"</string>
<plurals name="removed">
<item quantity="one">"Supprimé"</item>
<item quantity="other">"%d éléments supprimés"</item>
</plurals>
<string name="undo">"Annuler"</string>
<!-- tasker -->
<string name="toggle_service_state">"Démarrer le service"</string>
<string name="start_service_default">"Se connecter au serveur courant"</string>
<string name="start_service">"Se connecter à %s"</string>
<string name="stop_service">"Basculer sur %s"</string>
<string name="profile_default">"Utiliser le profil actuel"</string>
<!-- status -->
<string name="sent">"Envoyé :"</string>
<string name="received">"Reçu :"</string>
<!-- status -->
<string name="connecting">"Connexion…"</string>
<string name="vpn_connected">"Connecté, toucher pour vérifier la connexion"</string>
<string name="not_connected">"Non connecté"</string>
<!-- acl -->
<string name="custom_rules">"Règles personnalisées"</string>
<string name="action_add_rule">"Ajouter une/des règle(s)"</string>
<string name="edit_rule">"Modifier une règle"</string>
<string name="route_entry_all">"Toutes"</string>
<string name="route_entry_bypass_lan">"Exclure le LAN"</string>
<string name="route_entry_bypass_chn">"Exclure la Chine continentale"</string>
<string name="route_entry_bypass_lan_chn">"Exclure LAN et Chine continentale"</string>
<string name="acl_rule_templates_generic">"Pattern PCRE sous-réseau ou hôte"</string>
<string name="acl_rule_templates_domain">"Nom de domaine et tous ses noms de sous-domaines"</string>
<string name="plugin_configure">"Configurer…"</string>
<string name="plugin_disabled">"Désactivé"</string>
<string name="plugin_unknown">"Plugin inconnu %s"</string>
<string name="plugin_untrusted">"Attention : ce plugin ne semble pas provenir d'une source fiable reconnue."</string>
<string name="profile_plugin">"Plugin : %s"</string>
<string name="add_profile_scanner_permission_required">"La permission Appareil photo est nécessaire pour scanner le QR code."</string>
<!-- notification category -->
<string name="service_vpn">"Service VPN"</string>
<string name="add_profile_methods_manual_settings">"Paramètres manuels"</string>
<!-- misc -->
<string name="advanced">"Avancé"</string>
<!-- misc -->
<string name="service_mode">"Mode Service"</string>
<string name="service_mode_proxy">"Proxy seul"</string>
<string name="port_proxy">"Port proxy SOCKS5"</string>
<string name="port_local_dns">"Port DNS local"</string>
<string name="port_transproxy">"Port Transproxy"</string>
<string name="service_proxy">"Service Proxy"</string>
<string name="service_transproxy">"Service Transproxy"</string>
<string name="vpn_permission_denied">"Permission de créer un service VPN refusée"</string>
<string name="auto_connect_summary_v24">"Activer Shadowsocks au démarrage. Plutôt recommandé d'utiliser le VPN permanent"</string>
<string name="direct_boot_aware">"Activation-Désactivation sur écran verrouillé"</string>
<string name="direct_boot_aware_summary">"Vos informations de profil sélectionnées seront moins protégées"</string>
<string name="acl_rule_online_config">"URL de config en ligne"</string>
<string name="action_import_file">"Importer depuis un fichier…"</string>
<string name="night_mode">"Mode nuit"</string>
<string name="night_mode_system">"Suivre la config système"</string>
<string name="send_email">"Envoyer un email"</string>
<string name="action_export_more">"Exporter…"</string>
<string name="action_export_file">"Exporter dans un fichier…"</string>
<string name="cleartext_http_warning">"Le trafic HTTP en clair n'est pas sécurisé"</string>
<string name="share_over_lan">"Partager sur le réseau local"</string>
<string name="connection_test_pending">"Vérifier la connectivité"</string>
<string name="file_manager_missing">"Veuillez installer un gestionnaire de fichier tel que MiXplorer"</string>
</resources>
\ No newline at end of file
This diff is collapsed.
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2019 by Max Lv <max.c.lv@gmail.com>
Copyright (C) 2019 by Mygod Studio <contact-shadowsocks-android@mygod.be>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
DO NOT EDIT: This file was automagically generated by script.
If you are looking for contributing a translation, read this:
https://discourse.shadowsocks.org/t/poeditor-translation-main-thread/30
-->
<resources>
<string name="quick_toggle">"켜기/끄기"</string>
<string name="remote_dns">"원격 DNS"</string>
<string name="stat_summary">"송신: \t%3$s\t↑\t%1$s/s
수신: \t%4$s\t↓\t%2$s/s"</string>
<string name="connection_test_testing">"검사 중…"</string>
<string name="connection_test_error">"인터넷 연결을 찾을 수 없습니다: %s"</string>
<string name="connection_test_fail">"인터넷에 연결할 수 없습니다"</string>
<string name="connection_test_error_status_code">"오류 코드: #%d"</string>
<!-- proxy category -->
<string name="profile_name">"프로필 이름"</string>
<string name="proxy">"서버 주소"</string>
<string name="remote_port">"원격 포트"</string>
<string name="sitekey">"비밀번호"</string>
<string name="enc_method">"암호화 방법"</string>
<!-- feature category -->
<string name="ipv6">"IPv6 라우팅"</string>
<string name="ipv6_summary">"IPv6 트래픽도 원격으로 리다이렉트 합니다"</string>
<string name="route_list">"라우팅 대상"</string>
<string name="route_entry_gfwlist">"GFW 리스트"</string>
<!-- Fuzzy -->
<string name="proxied_apps">"원하는 앱만 프락시 적용하기"</string>
<string name="proxied_apps_summary">"선택한 앱에만 프락시를 적용합니다"</string>
<string name="on">"활성화"</string>
<!-- Fuzzy -->
<string name="bypass_apps">"선택된 앱들만 프록시 적용 제외하기"</string>
<string name="bypass_apps_summary">"이 옵션을 활성화하면 선택된 앱들은 프락시를 사용하지 않습니다"</string>
<string name="auto_connect">"자동 접속"</string>
<!-- Fuzzy -->
<string name="auto_connect_summary">"장치가 켜질 때 Shadowsocks를 자동으로 활성화합니다"</string>
<!-- Fuzzy -->
<string name="tcp_fastopen_summary">"루트 권한이 필요합니다"</string>
<string name="tcp_fastopen_summary_unsupported">"지원하지 않는 버전의 커널입니다: %s &lt; 3.7.1"</string>
<!-- Fuzzy -->
<string name="udp_dns">"DNS 포워딩"</string>
<!-- Fuzzy -->
<string name="udp_dns_summary">"모든 DNS 요청을 외부로 포워딩 합니다"</string>
<!-- notification category -->
<string name="forward_success">"Shadowsocks가 시작되었습니다"</string>
<string name="invalid_server">"잘못된 서버 이름입니다"</string>
<string name="service_failed">"원격 서버에 접속하는 데 실패했습니다"</string>
<string name="stop">"중지"</string>
<string name="stopping">"종료 중…"</string>
<string name="reboot_required">"VPN 서비스를 시작하는 데 실패했습니다. 장치를 재시작해 보세요."</string>
<string name="profile_invalid_input">"올바른 프로필 데이터를 찾을 수 없습니다"</string>
<!-- alert category -->
<string name="profile_empty">"프로필을 선택해 주세요"</string>
<string name="proxy_empty">"서버 주소와 비밀번호는 반드시 입력해야 합니다"</string>
<string name="connect">"접속"</string>
<!-- menu category -->
<string name="profiles">"프로필"</string>
<string name="settings">"설정"</string>
<string name="faq">"자주 묻는 질문"</string>
<string name="about">"이 앱에 대하여"</string>
<string name="edit">"수정"</string>
<string name="share">"공유"</string>
<string name="add_profile">"프로필 추가"</string>
<string name="action_apply_all">"설정을 모든 프로필에 적용"</string>
<string name="action_export">"클립보드로 내보내기"</string>
<string name="action_import">"클립보드에서 불러오기"</string>
<string name="action_export_msg">"성공적으로 내보냈습니다"</string>
<string name="action_export_err">"내보내기에 실패했습니다"</string>
<string name="action_import_msg">"성공적으로 불러왔습니다"</string>
<string name="action_import_err">"불러오는 데 실패했습니다"</string>
<!-- profile -->
<string name="profile_config">"프로필 설정"</string>
<string name="delete">"삭제"</string>
<string name="delete_confirm_prompt">"정말 이 프로필을 삭제하시겠습니까?"</string>
<!-- Fuzzy -->
<string name="share_qr_nfc">"QR 코드/NFC"</string>
<string name="add_profile_dialog">"이 Shadowsocks 프로필을 추가하시겠습니까?"</string>
<string name="add_profile_methods_scan_qr_code">"QR 코드 읽기"</string>
<plurals name="removed">
<item quantity="other">"삭제했습니다"</item>
</plurals>
<string name="undo">"실행 취소"</string>
<!-- tasker -->
<string name="toggle_service_state">"서비스 시작"</string>
<string name="start_service_default">"현재 서버에 연결"</string>
<string name="start_service">"%s로 연결"</string>
<string name="stop_service">"%s로 바꾸기"</string>
<string name="profile_default">"현재 프로필 사용"</string>
<!-- status -->
<string name="sent">"송신:"</string>
<string name="received">"수신:"</string>
<!-- status -->
<string name="connecting">"연결 중…"</string>
<string name="vpn_connected">"연결 완료. 탭 하면 연결 상태를 검사합니다."</string>
<string name="not_connected">"연결되지 않음"</string>
<!-- acl -->
<string name="custom_rules">"사용자 정의 규칙"</string>
<string name="acl_rule_templates_generic">"서브넷 혹은 호스트 이름 PCRE 패턴"</string>
<!-- plugin -->
<string name="plugin">"플러그인"</string>
<string name="plugin_configure">"플러그인 설정…"</string>
<string name="plugin_disabled">"비활성화 됨"</string>
<string name="plugin_unknown">"알 수 없는 플러그인: %s"</string>
<string name="plugin_untrusted">"경고: 이 플러그인은 신뢰할 수 있는 출처에서 온 것이 아닌 것 같습니다"</string>
<string name="profile_plugin">"플러그인: %s"</string>
<string name="add_profile_scanner_permission_required">"QR 코드를 읽어 들이려면 카메라 권한이 필요합니다"</string>
</resources>
\ No newline at end of file
This diff is collapsed.
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2019 by Max Lv <max.c.lv@gmail.com>
Copyright (C) 2019 by Mygod Studio <contact-shadowsocks-android@mygod.be>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
DO NOT EDIT: This file was automagically generated by script.
If you are looking for contributing a translation, read this:
https://discourse.shadowsocks.org/t/poeditor-translation-main-thread/30
-->
<resources>
<string name="quick_toggle">"Aç/Kapa"</string>
<string name="remote_dns">"Uzaktan DNS"</string>
<string name="stat_summary">"Yüklendi: \t\t\t\t\t%3$s\t↑\t%1$s
İndirildi: \t%4$s\t↓\t%2$s"</string>
<string name="connection_test_testing">"Test ediliyor…"</string>
<string name="connection_test_error">"İnternet bağlantısı bulunamadı: %s"</string>
<string name="connection_test_fail">"İnternet Bağlantısı Bulunamadı"</string>
<string name="connection_test_error_status_code">"Hata kodu: #%d"</string>
<!-- proxy category -->
<string name="profile_name">"Profil İsmi"</string>
<string name="proxy">"Sunucu"</string>
<string name="remote_port">"Uzaktan Port"</string>
<string name="sitekey">"Şifre"</string>
<string name="enc_method">"Şifreleme Methodu"</string>
<string name="ipv6_summary">"IPv6 trafiğini remote'a yönlendir"</string>
<string name="route_list">"Rota"</string>
<string name="route_entry_gfwlist">"GFW Listesi"</string>
<string name="proxied_apps">"Uygulamalar VPN modu"</string>
<string name="proxied_apps_summary">"Seçili uygulamalar için VPN'i yapılandır"</string>
<string name="on">"Açık"</string>
<!-- Fuzzy -->
<string name="bypass_apps">"Bypass Modu"</string>
<string name="bypass_apps_summary">"Seçili uygulamaları bypass etmek için bu seçeneği açın"</string>
<string name="auto_connect">"Otomatik Bağlan"</string>
<!-- Fuzzy -->
<string name="auto_connect_summary">"Shadowsocks'ı cihazı başlatırken aç"</string>
<!-- Fuzzy -->
<string name="tcp_fastopen_summary">"Açıp kapamak için ROOT yetkisi gerekiyor"</string>
<string name="tcp_fastopen_summary_unsupported">"Desteklenmeyen kernel sürümü: %s &lt; 3.7.1"</string>
<!-- Fuzzy -->
<string name="udp_dns">"DNS yönlendirme"</string>
<!-- Fuzzy -->
<string name="udp_dns_summary">"Tüm DNS isteklerini remote'a yönlendir"</string>
<!-- notification category -->
<string name="forward_success">"Shadowsocks başlatıldı."</string>
<string name="invalid_server">"Geçersiz sunucu ismi"</string>
<string name="service_failed">"Remote sunucuya bağlanma hatası"</string>
<string name="stop">"Dur"</string>
<string name="stopping">"Kapatılıyor…"</string>
<string name="reboot_required">"VPN servisi başlatılırken hata. Cihazınızı yeniden başlatmanız gerekebilir."</string>
<string name="profile_invalid_input">"Geçerli profil verisi bulunamadı."</string>
<!-- alert category -->
<string name="profile_empty">"Lütfen profil seçiniz"</string>
<string name="proxy_empty">"Proxy/Şifre alanları boş olmamalı"</string>
<string name="connect">"Bağlan"</string>
<!-- menu category -->
<string name="profiles">"Profiller"</string>
<string name="settings">"Ayarlar"</string>
<string name="faq">"SSS"</string>
<string name="about">"Hakkında"</string>
<string name="edit">"Düzenle"</string>
<string name="share">"Paylaş"</string>
<string name="add_profile">"Profil Ekle"</string>
<string name="action_apply_all">"Ayarları tüm profillere uygula"</string>
<string name="action_export">"Clipboarda ekle"</string>
<string name="action_import">"Clipboarddan al"</string>
<string name="action_export_msg">"Ekleme başarılı!"</string>
<string name="action_export_err">"Ekleme başarısız."</string>
<string name="action_import_msg">"Alım başarılı!"</string>
<string name="action_import_err">"Alım başarısız."</string>
<!-- profile -->
<string name="profile_config">"Profil ayarları"</string>
<string name="delete">"Kaldır"</string>
<string name="delete_confirm_prompt">"Bu profili kaldırmak istediğinize emin misiniz?"</string>
<!-- Fuzzy -->
<string name="share_qr_nfc">"QR kodu/NFC"</string>
<string name="add_profile_dialog">"Bu Shadowsocks Profilini ekle?"</string>
<string name="add_profile_methods_scan_qr_code">"QR kodu tarat"</string>
<plurals name="removed">
<item quantity="one">"Kaldırıldı"</item>
<item quantity="other">"%d nesne kaldırıldı"</item>
</plurals>
<string name="undo">"Geri al"</string>
<!-- tasker -->
<string name="toggle_service_state">"Servisi başlat"</string>
<string name="start_service_default">"Şu anki sunucuya bağlan"</string>
<string name="start_service">"%s 'a bağlan"</string>
<string name="stop_service">"%s 'a çevir"</string>
<string name="profile_default">"Şu anki profili kullan"</string>
<!-- status -->
<string name="sent">"Gönderildi:"</string>
<string name="received">"Alındı:"</string>
<!-- status -->
<string name="connecting">"Bağlanılıyor…"</string>
<string name="vpn_connected">"Bağlandı, test etmek için tıklayın"</string>
<string name="not_connected">"Bağlı değil"</string>
<!-- acl -->
<string name="custom_rules">"Kişisel kurallar"</string>
<string name="action_add_rule">"Kural(lar) ekle…"</string>
<string name="edit_rule">"Kuralları düzenle"</string>
<string name="route_entry_all">"Hepsi"</string>
<string name="route_entry_bypass_lan">"LAN bypassla"</string>
<string name="route_entry_bypass_chn">"Çin Anakara'sını bypassla"</string>
<string name="route_entry_bypass_lan_chn">"Lan ve Çin Anakarası'nı bypassla"</string>
<string name="route_entry_chinalist">"Çin lıstesı"</string>
<string name="acl_rule_templates_generic">"Subnet veya Sunucu Adı PCRE düzeni"</string>
<string name="acl_rule_templates_domain">"Domain ve alt domain isimleri"</string>
<!-- plugin -->
<string name="plugin">"Eklenti"</string>
<string name="plugin_configure">"Ayarla…"</string>
<string name="plugin_disabled">"Kapalı"</string>
<string name="plugin_unknown">"Bilinmeyen eklenti %s"</string>
<string name="plugin_untrusted">"Dikkat: Bu eklenti bilinen bir kaynaktan değil."</string>
<string name="profile_plugin">"Eklenti: %s"</string>
<string name="add_profile_scanner_permission_required">"QR kodu okumak için kamera izni gerekli."</string>
<!-- notification category -->
<string name="service_vpn">"VPN Servisi"</string>
<string name="add_profile_methods_manual_settings">"Manuel Ayarlar"</string>
<!-- misc -->
<string name="advanced">"Gelişmiş"</string>
<!-- misc -->
<string name="service_mode">"Servis modu"</string>
<string name="service_mode_proxy">"Sadece proxy"</string>
<string name="port_proxy">"SOCKS5 proxy portu"</string>
<string name="port_local_dns">"Yerel DNS portu"</string>
<string name="port_transproxy">"Transproxy portu"</string>
<string name="service_proxy">"Proxy Servisi"</string>
<string name="service_transproxy">"Transproxy Servisi"</string>
<string name="vpn_permission_denied">"VPN servisi yaratma isteği reddedildi"</string>
<string name="auto_connect_summary_v24">"Shadowsockı cihazla beraber başlat. Bunun yerine her zaman açık VPN kullanılması tavsiye edilirö"</string>
<string name="direct_boot_aware">"Ekran kitliyken açıp kapamaya izin ver."</string>
<string name="direct_boot_aware_summary">"Seçili profil bilginiz daha az korunacak."</string>
<string name="acl_rule_online_config">"Online ayarlar URL'i"</string>
<string name="action_import_file">"Dosyadan al…"</string>
<string name="night_mode">"Gece modu"</string>
<string name="night_mode_system">"Takip sistemi"</string>
<string name="night_mode_auto">"Oto"</string>
<string name="night_mode_on">"Açık"</string>
<string name="night_mode_off">"Kapalı"</string>
</resources>
\ No newline at end of file
This diff is collapsed.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Shadowsocks</string>
<string name="app_name">TT加速器</string>
<string name="quick_toggle">Toggle</string>
<string name="send_email">Send email</string>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment