Category Archives: Android

「Android開発」EditTextで数字入力範囲の上限を判断するサンプルコード

参考コード:
private int MIN_MARK = 0;
private int MAX_MARK = 100;
//private void setRegion(EditText et)
private void setRegion( final EditText et)
{
et.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (start > 1)
{
if (MIN_MARK != -1 && MAX_MARK != -1)
{
int num = Integer.parseInt(s.toString());
if (num > MAX_MARK)
{
s = String.valueOf(MAX_MARK);
et.setText(s);
}
else if(num < MIN_MARK)
s = String.valueOf(MIN_MARK);
return;
}
}
}

@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s)
{
if (s != null && !s.equals(“”))
{
if (MIN_MARK != -1 && MAX_MARK != -1)
{
int markVal = 0;
try
{
markVal = Integer.parseInt(s.toString());
}
catch (NumberFormatException e)
{
markVal = 0;
}
if (markVal > MAX_MARK)
{
Toast.makeText(getBaseContext(), “100以上できません”, Toast.LENGTH_SHORT).show();
et.setText(String.valueOf(MAX_MARK));
}
return;
}
}
}
});
}

「android開発」webviewを利用してhttpsページにアクセスする方法

Javaコード:
mWeb.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedSslError(WebView view,SslErrorHandler handler, SslError error) {
// TODO Auto-generated method stub
//super.onReceivedSslError(view, handler, error);
Log.d(TAG,”====>handler.proceed();”);
handler.proceed();
}
});

「android開発」グルーバル例外(exception)を処理するサンプルコード

1.例外(exception)クラスの定義 
参考コード:
package exception;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.lang.Thread.UncaughtExceptionHandler;

import android.content.Context;
import android.util.Log;

public class HandlerException implements UncaughtExceptionHandler {

private static final String TAG = “HandlerException”;

private Context context;
private Thread.UncaughtExceptionHandler mDefaultHandler;

private static HandlerException mHandlerException = new HandlerException();

private HandlerException() {
}

public static HandlerException getInstance() {
return mHandlerException;
}

public void init(Context context) {
this.context = context;
mDefaultHandler = Thread.getDefaultUncaughtExceptionHandler();
Thread.setDefaultUncaughtExceptionHandler(this);
}

@Override
public void uncaughtException(Thread thread, Throwable e) {
//デフォルトの例外処理
if (!handlerException(e) && mDefaultHandler != null) {
mDefaultHandler.uncaughtException(thread, e);
} else {
// 例外処理済み場合終了
try {
Thread.sleep(3000);
} catch (InterruptedException ex) {

}
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(10);
}

}

public boolean handlerException(Throwable e) {
if (e == null)
return false;
final String msg = e.getLocalizedMessage();
final StackTraceElement[] stack = e.getStackTrace();
final String message = e.getMessage();
Log.d(TAG, msg);
Log.d(TAG, message);
//ローカルで例外ログを保存
try {
//テスト失敗場合
FileOutputStream fos = context.openFileOutput(“/Android/log_startnews24.txt”,
context.MODE_PRIVATE);
fos.write(message.getBytes());
fos.flush();
fos.close();
/*File log = new File(“log_startnews24.txt”);
if(!log.exists())
log.mkdirs();
FileOutputStream outputStream = new FileOutputStream(log);
outputStream.write(message.getBytes());
for (int i = 0; i < stack.length; i++) {
outputStream.write(stack.toString().getBytes());
}
outputStream.flush();
outputStream.close();*/
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
//例外処理終了,trueが戻る
//例外処理終了しない,falseが戻る
return false;
}

}

2.例外クラスを呼び出す
参考コード:
import exception.HandlerException;
import android.app.Application;

public class My_startnews24 extends Application {
private static My_startnews24 instance;
private HandlerException handlerException;

public My_startnews24() {
instance = this;
}

public static My_startnews24 getInstance() {
return instance;
}

@Override
public void onCreate() {
super.onCreate();
handlerException = HandlerException.getInstance();
handlerException.init(getApplicationContext());
}
}

AndroidアプリでカスタムURL(scheme)を設定する方法

サンプルコード:
<activity
android:name=”com.startnews24.androidtest.MainActivity”
android:label=”@string/app_name”
android:exported=”true” >
<intent-filter>
<action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
<intent-filter>
<data android:scheme=”startnews24test”/>

<action android:name=”android.intent.action.VIEW” />
<category android:name=”android.intent.category.DEFAULT” />
<category android:name=”android.intent.category.BROWSABLE” />
</intent-filter>
</activity>

「android開発」schemeを利用して特定URIでActivityを起動する方法

1.AndroidManifast.xml
<intent-filter>
<category android:name=”android.intent.category.DEFAULT”></category>
<action android:name=”android.intent.action.VIEW”></action>
<data android:scheme=”sh”></data>
</intent-filter>
2.Intentを利用してActivityを呼び出す
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(“sh://jz34588”)));

3.Activityでデータを取得
this.getIntent().getScheme();//Scheme名前を取得
this.getIntent().getDataString();//Uriパスを取得

「android開発」SDカードのファイルを読み込みと書き込み方法

1.AndroidManifest.xmlに権限を追加
<!– SDカードのファイルを作成、削除権限 –>
<uses-permission android:name=”android.permission.MOUNT_UNMOUNT_FILESYSTEMS”/>
<!– SDカードへデータの書き込み権限 –>
<uses-permission android:name=”android.permission.WRITE_EXTERNAL_STORAGE”/>

2.Main.java
public class Main extends Activity {

private static final String FILE_NAME = “/myStrongFile.bin”;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final EditText text1 = (EditText) findViewById(R.id.editText1);
final EditText text2 = (EditText) findViewById(R.id.editText2);
Button writeButton = (Button) findViewById(R.id.button1);
Button readButton = (Button) findViewById(R.id.button2);
String str = “”;
// SDカードがあるかどうかを判断
str = Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED) ? “ありかつ読み書き可” : “無しまたは読み書き不可”;
Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
writeButton.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
write(text1.getText().toString());
text1.setText(“”);
}
});

readButton.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
text2.setText(read());
}
});

}
private String read() {
StringBuilder sb = null;
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
// SDカード格納ディレクトリを取得 /mnt/sdcard/
File sdCardDir = Environment.getExternalStorageDirectory();
// 指定されたファイルに対応する入力ストリーム
FileInputStream fis;
try {
fis = new FileInputStream(sdCardDir.getCanonicalPath()
+ FILE_NAME);
BufferedReader reader = new BufferedReader(
new InputStreamReader(fis));
sb = new StringBuilder(“”);
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line);
}
reader.close();
return sb.toString();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}
return null;

}

private void write(String str) {
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
try {
// FileOutputStream(Environment.getExternalStorageDirectory().getCanonicalPath()+FILE_NAME);
// SDカードのディレクトリを取得
File sdCardDir = Environment.getExternalStorageDirectory();
File targetFile = new File(sdCardDir.getCanonicalPath()
+ FILE_NAME);
// 指定されたファイルにコンテンツを追加
RandomAccessFile raf = new RandomAccessFile(targetFile, “rw”);
// ファイルポインタ
raf.seek(targetFile.length());
raf.write(str.getBytes());
raf.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
3.main.xml
<RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”
xmlns:tools=”http://schemas.android.com/tools”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
tools:context=”${relativePackage}.${activityClass}” >

<EditText
android:id=”@+id/editText1″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignParentLeft=”true”
android:layout_alignParentTop=”true”
android:layout_marginLeft=”34dp”
android:layout_marginTop=”20dp”
android:ems=”10″ >

<requestFocus />
</EditText>

<EditText
android:id=”@+id/editText2″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignLeft=”@+id/editText1″
android:layout_below=”@+id/editText1″
android:layout_marginTop=”42dp”
android:ems=”10″
/>

<Button
android:id=”@+id/button1″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignLeft=”@+id/editText2″
android:layout_below=”@+id/editText2″
android:layout_marginTop=”44dp”
android:text=”書く” />

<Button
android:id=”@+id/button2″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignBaseline=”@+id/button1″
android:layout_alignBottom=”@+id/button1″
android:layout_alignRight=”@+id/editText1″
android:layout_marginRight=”17dp”
android:text=”読む” />

</RelativeLayout>

Android SDカードのファイルを操作する方法

1.レイアウトファイル—-main.xml
<RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”
xmlns:tools=”http://schemas.android.com/tools”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
tools:context=”${relativePackage}.${activityClass}” >

<TextView
android:id=”@+id/textView1″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”ディレクトリ:” />

<Button
android:id=”@+id/button1″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignParentBottom=”true”
android:layout_centerHorizontal=”true”
android:text=”ディレクトリに戻る” />

<ListView
android:id=”@+id/listView1″
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:layout_above=”@+id/button1″
android:layout_alignParentLeft=”true”
android:layout_below=”@+id/textView1″ >

</ListView>

</RelativeLayout>

2.Main.java
public class Main extends Activity {

private TextView textView;
private Button button;
private ListView listView;

public File currentParentFile;
public File[] currentFiles;
public static String sdcardDir ;
static {
try {
//sdのパス
sdcardDir = Environment.getExternalStorageDirectory().getCanonicalPath();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textView = (TextView) findViewById(R.id.textView1);
button = (Button) findViewById(R.id.button1);
listView = (ListView) findViewById(R.id.listView1);
File root = new File(sdcardDir);
if(root.exists()){
currentParentFile = root;
currentFiles = root.listFiles();
updateListView(currentFiles);
}

listView.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
if (currentFiles[position].isFile())
return;
File[] tmp = currentFiles[position].listFiles();
if (tmp == null || tmp.length == 0) {
Toast.makeText(Main.this, “パスが無効または存在しない”,
Toast.LENGTH_SHORT).show();
} else {
currentParentFile = currentFiles[position];
currentFiles = tmp;
updateListView(currentFiles);
}
}
});
button.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
try {
if (!currentParentFile.getCanonicalPath().equals(
sdcardDir)) {
currentParentFile = currentParentFile.getParentFile();
currentFiles = currentParentFile.listFiles();
updateListView(currentFiles);
}
else
return;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}

private void updateListView(File[] files) {
List<Map<String, Object>> itemps = new ArrayList<Map<String, Object>>();
for (int i = 0; i < files.length; i++) {
Map<String, Object> listItem = new HashMap<String, Object>();
if (files[i].isDirectory())
listItem.put(“icon”, R.drawable.folder);
else
listItem.put(“icon”, R.drawable.file);
listItem.put(“name”, files[i].getName());
itemps.add(listItem);
}

SimpleAdapter simpleAdapter = new SimpleAdapter(this, itemps,
R.layout.listitem, new String[] { “icon”, “name” }, new int[] {
R.id.imageView1, R.id.text });
listView.setAdapter(simpleAdapter);
try {
textView.setText(“ディレクトリ:”+currentParentFile.getCanonicalPath());
} catch (IOException e) {
e.printStackTrace();
}
}
}

3.listitem.xml:
<?xml version=”1.0″ encoding=”utf-8″?>
<RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:layout_width=”match_parent”
android:layout_height=”match_parent” >

<ImageView
android:id=”@+id/imageView1″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignParentLeft=”true”
android:layout_alignParentTop=”true”
android:src=”@drawable/ic_launcher” />

<TextView
android:id=”@+id/text”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignParentTop=”true”
android:layout_marginTop=”15dp”
android:layout_toRightOf=”@+id/imageView1″
android:text=”TextView” />

</RelativeLayout>

Android 5.0 Lollipopダウンロード

ダウンロード
提供元サイトからダウンロード

 

インスール手順
Make sure you have a bin/ directory in your home directory and that it is included in your path:
$ mkdir ~/bin
$ PATH=~/bin:$PATH
Download the Repo tool and ensure that it is executable:
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

概要

Googleが、Nexusシリーズ向けに「Android 5.0 Lollipop」の配布を開始しました。マテリアルデザインを採用したAndroid 5.0 Lollipopですが、アップデートが配布されるのには各機種によって時間差があるようで、「今すぐアップデートしたい」という人向けにファクトリーイメージを焼き付ける方法が公開されている

「Android入門」基本知識のまとめ(manifest.xmlとmain.xml)

1.Manifest.xmlにAndroidの入り口プログラムの設
代码

<?xml version=”1.0″ encoding=”UTF-8″?>
<manifest xmlns:android=”http://schemas.android.com/apk/res/android”
package=”DxSoft.helloandroid”>
<application>
<activity android:name=”.MainActivity” android:label=”テスト”>
<intent-filter>
<action android:name=”android.intent.action.MAIN”/>
<category android:name=”android.intent.category.LAUNCHER”/>
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion=”4″ /><!–最小バージョン4 Android1.6!–>
</manifest>

2.main.xmlに画面の文字を表示

<?xml version=”1.0″ encoding=”UTF-8″?>
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:orientation=”vertical”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”>”
<TextView <!–Androidの制御情報–>
android:layout_width=”fill_parent” <!–補充–>
android:layout_height=”wrap_content”
android:text=”@string/ShowText”/> <!–Strings.xmlにStringのShowText情報!–>
</LinearLayout>
3.Java代码
package DxSoft.helloandroid;
import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends Activity {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
// ToDo add your GUI initialization code here
}

}

4.「import android.widget.TextView;」を利用
TextView tv=new TextView(this);
tv.setText(R.string.ShowText);
setContentView(tv);

Google Oauth2プラグインを利用してGoogle認証画面を呼び出す

googleコード:

-(void)authThroughGoogle
{
NSString *clientId = GOOGLE_CLIENT_ID;
NSString *clientSecret = GOOGLE_CLIENT_SECRET;
NSString *scope = GOOGLE_AUTH_SCOPE;
GTMOAuth2ViewControllerTouch *authViewController = [[[GTMOAuth2ViewControllerTouch alloc] initWithScope:scope clientID:clientId clientSecret:clientSecret keychainItemName:kKeyChainGoogleAuth delegate:self finishedSelector:@selector(viewController:finishedWithAuth:error:)]autorelease];
NSString *html = @”<html><body bgcolor=white><div align=center>Loading…</div></body></html>”;
authViewController.initialHTMLString = html;
[self.navigationController pushViewController:authViewController animated:YES];
}

サーバ側からAuth Tokenを取得

-(void)viewController:(GTMOAuth2ViewControllerTouch *)viewController finishedWithAuth:(GTMOAuth2Authentication *)auth error:(NSError *)error{
if (error!=nil) {
NSLog(@”認証失敗!”);
[self showAlertView:[error localizedDescription]];
}else{
NSLog(@”認証成功!: %@”, [auth accessToken]);
NSString *token = [AuthHelper getAuthTokenThroughGoogle:[auth accessToken]];
if(token != nil){
[[NSUserDefaults standardUserDefaults] setObject:token forKey:APP_NAME];
[self goToMainPage];
}else{
[self showAlertView:@”G authorize tokenを取得した”];
}
}
}

10 / 20« 先頭...89101112...20...最後 »