Fallout: New Vegas – %100 Türkçe Yama

Resim
Menü ve Görevler  % 100 Görev Açıklamaları  % 100 Notlar  % 100 Terminaller  % 100 Diyaloglar  % 100 Altyazılar  % 100 Bu yama  OyunÇeviri Ekibi  tarafından adına hazırlanmıştır. -Yama Update 7 (1.4.0.525) ile uyumlu hazırlanmıştır. -Ultimate Edition ile uyumludur. -Yamayı kurduktan sonra oyunu Launcher.exe’den başlatıp Veri Dosyaları’nı tıklayın, ardından FalloutNV-TR.esp’nin yanındaki kutucuğu işaretleyin. -Oyun içinden Altyazıları açmayı unutmayın. NOT: Yama bazı modlarla sorun çıkarabilir.  Yamanın Türkçeleştirdiği içerikler: -Fallout New Vegas -Caravan Pack -Classic Pack -Mercenary Pack -Tribal Pack ÖNSÖZ Bu RPG oyununu Türkçeye kazandırmanın hazzını yaşıyorum. Özellikle geniş evrene, ve derin hikâyeye sahip Fallout gibi bir oyunu çevirmek, şahsım adına gurur verici bir olay. Oyunculukta üst boyut olduğuna inandığım Rol Yapma oyunları her zaman ilgimi çekmişti. Çizgisel olmayan oynanış, farklı yollardan gidebilme, değişik stratejile...

Write image to External Storage with Permission Request at runtime, for Android 6+

It's a simple example to write image to External Storage, with targetSdkVersion = 28. It work as expected on devices running Android below 6, but fail on Android 6+! (Solution provided in second part below)



Java code:
package com.blogspot.android_er.androidwriteimage;

import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;

public class MainActivity extends AppCompatActivity {

final String MyAlbum = "android-er";
Bitmap bitmapSrc;
TextView tvSavedInfo;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

tvSavedInfo = (TextView)findViewById(R.id.savedinfo);

dispTestCase();

//prepare dummy source of bitmap to save
Drawable drawable = getDrawable(R.mipmap.ic_launcher);
bitmapSrc = BitmapFactory.decodeResource(
getApplicationContext().getResources(),
R.mipmap.ic_launcher);

ImageView ivImage;
ivImage = findViewById(R.id.imageView1);
ivImage.setImageDrawable(drawable);

Button btnSave;
btnSave = (Button)findViewById(R.id.buttonSave);
btnSave.setOnClickListener(btnOnClickListener);

}

public File getPublicAlbumStorageDir(String albumName) {
// Get the directory for the user's public pictures directory.
File file = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES), albumName);
if (file.mkdirs()) {
//if directory not exist
Toast.makeText(getApplicationContext(),
file.getAbsolutePath() + " created",
Toast.LENGTH_LONG).show();
}else{
Toast.makeText(getApplicationContext(),
"Directory not created", Toast.LENGTH_LONG).show();
}
return file;
}


Button.OnClickListener btnOnClickListener = new Button.OnClickListener(){

@Override
public void onClick(View v) {

tvSavedInfo.setText("");
writeImage();

}
};

private void writeImage(){
//generate a unique file name from timestamp
Date date = new Date();
SimpleDateFormat simpleDateFormat =
new SimpleDateFormat("yyMMdd-hhmmss-SSS");
String fileName = "img" + simpleDateFormat.format(new Date()) + ".jpg";

File dir = getPublicAlbumStorageDir(MyAlbum);
File file = new File(dir, fileName);

OutputStream outputStream = null;
try {
outputStream = new FileOutputStream(file);
bitmapSrc.compress(Bitmap.CompressFormat.JPEG, 80, outputStream);
outputStream.flush();
outputStream.close();

tvSavedInfo.setText("File saved: \n" + file.getAbsolutePath());

} catch (FileNotFoundException e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(),
"FileNotFoundException: \n" + e.getMessage(),
Toast.LENGTH_LONG).show();
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(),
"IOException: \n" + e.getMessage(),
Toast.LENGTH_LONG).show();
}
}


private void dispTestCase(){
String testCase;

TextView tvTestCase;
tvTestCase = (TextView)findViewById(R.id.testcase);
testCase = "Tested on Android " + Build.VERSION.RELEASE + "\n";


PackageManager packageManager = getPackageManager();
String packageName = getPackageName();
int targetSdkVersion;
try {
PackageInfo packageInfo =
packageManager.getPackageInfo(packageName, 0);

ApplicationInfo applicationInfo = packageInfo.applicationInfo;
targetSdkVersion = applicationInfo.targetSdkVersion;

testCase += "targetSdkVersion = " + targetSdkVersion;

} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(),
"NameNotFoundException: " + e.getMessage(),
Toast.LENGTH_LONG).show();
}

tvTestCase.setText(testCase);

}

}


Layout XML:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
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"
android:layout_margin="10dp"
tools:context=".MainActivity">

<TextView
android:id="@+id/addr"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="android-er.blogspot.com"
android:textSize="20dp"
android:textStyle="italic"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Write Image to External Storage"
android:textSize="26dp"
android:textStyle="bold"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/addr" />

<TextView
android:id="@+id/testcase"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="26dp"
android:textColor="#A00000"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/title"/>

<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/testcase" />
<TextView
android:id="@+id/savedinfo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/imageView1"/>

<Button
android:id="@+id/buttonSave"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click to save"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/savedinfo" />

</android.support.constraint.ConstraintLayout>


uses-permission of "android.permission.WRITE_EXTERNAL_STORAGE" is needed in manifest.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.blogspot.android_er.androidwriteimage">

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>

reference:
- Android Developers > Docs > Guides > Save files on device storage


Request Permission at runtime:

The above code fail when install on device running Android 6+! Because start from Android 6, your apps have to request user approve permissions at runtime. The following example show how to check and request permission at runtime. You still have to declare uses-permission of "android.permission.WRITE_EXTERNAL_STORAGE" in manifest.

When run on devices below Android 6, permission will be granted at install time. When run on Android 6+, you have to check permission at runtime before perform the task and ask user for approval if need.



package com.blogspot.android_er.androidwriteimage;

import android.Manifest;
import android.app.Activity;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;

public class MainActivity extends AppCompatActivity {

final String MyAlbum = "android-er";
Bitmap bitmapSrc;
TextView tvSavedInfo;

Activity thisActivity;
final int MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE = 1;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

thisActivity = this;

tvSavedInfo = (TextView)findViewById(R.id.savedinfo);

dispTestCase();

//prepare dummy source of bitmap to save
Drawable drawable = getDrawable(R.mipmap.ic_launcher);
bitmapSrc = BitmapFactory.decodeResource(
getApplicationContext().getResources(),
R.mipmap.ic_launcher);

ImageView ivImage;
ivImage = findViewById(R.id.imageView1);
ivImage.setImageDrawable(drawable);

Button btnSave;
btnSave = (Button)findViewById(R.id.buttonSave);
btnSave.setOnClickListener(btnOnClickListener);

}

public File getPublicAlbumStorageDir(String albumName) {
// Get the directory for the user's public pictures directory.
File file = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES), albumName);
if (file.mkdirs()) {
//if directory not exist
Toast.makeText(getApplicationContext(),
file.getAbsolutePath() + " created",
Toast.LENGTH_LONG).show();
}else{
Toast.makeText(getApplicationContext(),
"Directory not created", Toast.LENGTH_LONG).show();
}
return file;
}

Button.OnClickListener btnOnClickListener = new Button.OnClickListener(){

@Override
public void onClick(View v) {

tvSavedInfo.setText("");

if (ContextCompat.checkSelfPermission(thisActivity,
Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
// Permission is not granted
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(
thisActivity,
Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
// Show an explanation to the user *asynchronously* -- don't block
// this thread waiting for the user's response! After the user
// sees the explanation, try again to request the permission.

//to simplify, call requestPermissions again
Toast.makeText(getApplicationContext(),
"shouldShowRequestPermissionRationale",
Toast.LENGTH_LONG).show();
ActivityCompat.requestPermissions(thisActivity,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE);
} else {
// No explanation needed; request the permission
ActivityCompat.requestPermissions(thisActivity,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE);
}
}else{
// permission granted
writeImage();
}


}
};

@Override
public void onRequestPermissionsResult(int requestCode,
@NonNull String[] permissions,
@NonNull int[] grantResults) {

if(requestCode == MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE){
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// permission was granted.
Toast.makeText(getApplicationContext(),
"permission was granted, thx:)",
Toast.LENGTH_LONG).show();
} else {
// permission denied.
Toast.makeText(getApplicationContext(),
"permission denied! Oh:(",
Toast.LENGTH_LONG).show();
}
return;
}else{
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}


private void writeImage(){
//generate a unique file name from timestamp
Date date = new Date();
SimpleDateFormat simpleDateFormat =
new SimpleDateFormat("yyMMdd-hhmmss-SSS");
String fileName = "img" + simpleDateFormat.format(new Date()) + ".jpg";

File dir = getPublicAlbumStorageDir(MyAlbum);
File file = new File(dir, fileName);

OutputStream outputStream = null;
try {
outputStream = new FileOutputStream(file);
bitmapSrc.compress(Bitmap.CompressFormat.JPEG, 80, outputStream);
outputStream.flush();
outputStream.close();

tvSavedInfo.setText("File saved: \n" + file.getAbsolutePath());

} catch (FileNotFoundException e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(),
"FileNotFoundException: \n" + e.getMessage(),
Toast.LENGTH_LONG).show();
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(),
"IOException: \n" + e.getMessage(),
Toast.LENGTH_LONG).show();
}
}

private void dispTestCase(){
String testCase;

TextView tvTestCase;
tvTestCase = (TextView)findViewById(R.id.testcase);
testCase = "Tested on Android " + Build.VERSION.RELEASE + "\n";


PackageManager packageManager = getPackageManager();
String packageName = getPackageName();
int targetSdkVersion;
try {
PackageInfo packageInfo =
packageManager.getPackageInfo(packageName, 0);

ApplicationInfo applicationInfo = packageInfo.applicationInfo;
targetSdkVersion = applicationInfo.targetSdkVersion;

testCase += "targetSdkVersion = " + targetSdkVersion;

} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(),
"NameNotFoundException: " + e.getMessage(),
Toast.LENGTH_LONG).show();
}

tvTestCase.setText(testCase);

}

}


Layout XML file is same as above.

reference:
- Android Developers > Docs > Guides > Request App Permissions




Yorumlar

Bu blogdaki popüler yayınlar

FileViewPro 2013 1.5.0 Türkçe Full Tam indir

May Queen Kore Dizisi ve Yerli Uyarlaması Mayıs Kraliçesi

NetCad Full Türkçe İndir 5.2.1035