Ứng dụng sổ tay ngữ pháp tiếng nhật


Ứng dụng sổ tay ngữ pháp tiếng nhật với chức năng như một từ đển dùng để tra cứu các mẫu câu các cấu trúc ngữ pháp một cách thuận lợi.
Hiện tại ứng dụng có trên 2 nền tảng là IOS và Android với số mẫu câu trên 1000 mẫu hy vọng sẽ giúp nhiều cho các bạn trong việc học tiếng nhật

unnamed

Một số hình ảnh trên Android

unnamed (1)unnamed (2)unnamed (3)

Một số hình ảnh trên IOS

mzl.kkdfuheemzl.lmyibvupmzl.flirtsdd

Chức năng chính của chương trình :

– Tra cứu mẫu ngữ pháp theo từ khóa (có thể sử dụng * hoặc ? để tìm kiếm nâng cao)

* đại diện cho ký tự bất kỳ

? đại diện cho ít nhất 1 ký tự

Nhập số để nhảy nhanh đến mẫu

– Đánh dấu mẫu yêu thích

– Lưu lại lịch sử các mẫu đã xem

Chương trình hoàn toàn miễn phí download tại :

Android : https://play.google.com/store/apps/details?id=tranphuochung.wordpress.com.sotaynguphap

IOS (Iphone, Ipad) : https://itunes.apple.com/us/app/so-tay-ngu-phap-tieng-nhat/id800794885?mt=8

Chương trình hiện đang phát triển rất mong sự ủng hộ và đóng góp nhiệt tình từ các bạn

Advertisements

Cách đưa ứng dụng lên googlePlay và một số chú ý


Để đưa ứng dụng lên googleplay bạn phải xuất file apk như sau :

vào file –>export

image

Chọn Export Android Application sau đó nhấn next

image

Bước tiếp theo chọn Project bạn cần Export rồi nhấn next

image

Click vào Create new keystore nếu app bạn lần đầu đưa lên, chọn nơi lưu key và nhập password vào hai ô dưới (Lưu ý hãy lưu lại key này nếu không sẽ gặp rắc rối về sau)

image

Nhập tên alias, Password, config Validity(years) thì nhập từ 1 đến 1000 (số nào cũng được) đây là số năm của key, sau đó bấm next

image

Sau đó chọn đích lưu file apk và xuất thành công

image

Bạn vào Google Develop Đăng nhập vào tài khoản google sau đó nhấn vào biểu tượng

image

Khi click thì hiện biểu tượng click vào Continue without license key

image

Chọn file Apk vừa xuất ra, sau đó bấm vào upload

image

Nhập các thông tin, như tên ứng dụng, mô tả, ảnh ứng dụng sau đó qua tab apk file và active cái file apk vừa upload

image

Khi đã save thành công, bạn tiến hành bấm Publish, chờ khoảng 30 phút ứng dụng sẽ có ở google plays

Theo dạng https://play.google.com/store/apps/details?id=<namespace của ứng dụng bạn>

Update ứng dụng :

để update ứng dụng, bạn phải vào file AndroidManifest.xml chỉnh các thông số sau : versioncode giá trị của nó phải lớn hơn giá trị phiên bản cũ, version name : tên của verson ví dụ 1.0, 2.0,2.1

image

Tiến hành export file như bước đầu, nhưng chú ý phải chọn Use existing ketstore đã lưu ở lần đầu xuất file,

Chú ý : Phải lưu lại key này nếu không bạn sẽ không update được ứng dụng của mình

image

Sau đó tiến hành nhập password đã lưu lần trước và tiến hành xuất ra file apk phiên bản mới

vào lại Google App developer và click vào ứng dụng cần update, sau đó sang thẻ apk và tiến hành upload file apk mới.

Ứng dụng tra cứu ngữ pháp N1-N2 cho Android


Học tiếng nhật bây giờ có lẽ là một ngoại ngữ khá thú vị và dễ kiếm tiền Cười hở miệng

Để học tốt một ngôn ngữ ngoài từ vựng ra, các bạn còn phải nắm rõ ngữ pháp của ngôn ngữ đó.

Để hệ thống hóa hệ thống ngữ pháp N1,N2 với 2 ứng dụng, Ngữ pháp N1 và Ngữ Pháp N2 giúp các bạn có thể hệ thống và tra dễ dàng những ngữ pháp đã học

device-2013-01-22-211949

Chức năng chính của hai chương trình :

– Liệt kê danh sách ngữ pháp

-Xem cấu trúc, cách dùng, và ví dụ của mẫu câu đó.

– Tìm kiếm ngữ pháp

device-2013-01-22-212025

Với hai ứng dụng này, mình đang phát triển, rất mong sự góp ý của các bạn

Download và cài đặt tại Google Plays

Ngữ Pháp N1

Ngữ Pháp N2

Pro OpenGL ES for Android


Pro OpenGL ES for Android (Professional Apress)

In Pro OpenGL ES for Android, you’ll find out how to harness the full power of OpenGL ES, and design your own 3D applications by building a fully-functional 3D solar system model using Open GL ES!
OpenGL has set the standard for 3D computer graphics, and is an essential aspect of Android development. This book offers everything you need to know, from basic mathematical concepts to advanced coding techniques. You’ll learn by building a fascinating 3D solar system simulator!
After introducing Open GL ES, Pro OpenGL ES for Android explains the basics of 3D math and then orients you to the native Android 3D libraries you’ll be using in your own 3D games and the solar system project you’ll build using this book. Through the solar system example project, you’ll learn how to incorporate a variety of graphic and animation techniques into your applications. You will also discover how the full spectrum of 3D development that awaits, with topics such as lighting, texture-mapping, modeling, shaders, blending modes, and several more advanced concepts.
By the time you finish Pro OpenGL ES for Android, you’ll have learned all the skills you’ll need to build your own incredible 3D applications, based on one of the most powerful 3D libraries available.

What you’ll learn
  • The basics of 3D mathematics, and how they are applied in the OpenGL library
  • How to design and build your 3D worlds
  • To create 2D interfaces within the 3D world
  • To develop animation and 3D movement
  • How to implement 3D shading, coloring, and texturing
  • The differences between OpenGL and other 3D toolkits
  • To build a fully-functional 3D solar system simulator using OpenGL ES
Who this book is for

Experienced Android programmers who want to enter the 3D world of OpenGL ES programming.

Table of Contents
  1. Introduction to OpenGL ES and Our 3D Solar System Project
  2. Generating a Basic OpenGL Program
  3. Getting Past the 3D Math
  4. Shading, Lighting and Colors
  5. Materials and Textures
  6. Animation
  7. Creating a User Interface
  8. Blending Modes, Buffer Objects, and Other Cool Stuff
  9. Latest Features of OpenGL ES
  10. Ray Tracing, Hidden Surfaces, and Other Advanced Topics

Appendix A: APIs

DOWNLOAD

Face detection for Camera


Long long time ago(2010-05-19), I have a post "Android FaceDetector" about how to use android.media.FaceDetector to identify faces in a Bitmap.
Start from Android 4, API Level 14, the android.hardware.Camera class provide the feature of Face Detection. You can build apps to detect face on camera at live.

image

The method startFaceDetection() starts the face detection. This should be called after preview is started. The camera will notify Camera.FaceDetectionListener of the detected faces in the preview frame. The detected faces may be the same as the previous ones. Applications should call stopFaceDetection() to stop the face detection. This method is supported if getMaxNumDetectedFaces() returns a number larger than 0. If the face detection has started, apps should not call this again.
When the face detection is running, setWhiteBalance(String), setFocusAreas(List), and setMeteringAreas(List) have no effect. The camera uses the detected faces to do auto-white balance, auto exposure, and autofocus.


If the apps call autoFocus(AutoFocusCallback), the camera will stop sending face callbacks. The last face callback indicates the areas used to do autofocus. After focus completes, face detection will resume sending face callbacks. If the apps call cancelAutoFocus(), the face callbacks will also resume.
After calling takePicture(Camera.ShutterCallback, Camera.PictureCallback, Camera.PictureCallback) or stopPreview(), and then resuming preview with startPreview(), the apps should call this method again to resume face detection.

It’s modify from the exercise "Start Camera auto-focusing, autoFocus()" to add function of face detection.
Modify main.xml to add a SurfaceView for camera preview, and a TextView to display the number of face detected.

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:orientation="vertical" >

   <TextView
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:text="@string/hello" />
   <TextView
       android:id="@+id/prompt"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"/>
   <SurfaceView
       android:id="@+id/camerapreview"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content" />

</LinearLayout>

 

Create /res/layout/control.xml, it’s a view overlap with the preview SurfaceView, to provide a button to take picture.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/background"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="bottom"
>
<Button
android:id="@+id/takepicture"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" * Take Picture "
android:layout_gravity="right"
android:layout_margin="10px"
/>
</LinearLayout>

 

Main code, call camera.startFaceDetection() after camera.startPreview(), and call camera.stopFaceDetection() before camera.stopPreview(), also define our FaceDetectionListener to display the result of number of face detected.

package com.exercise.AndroidCamera;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.OutputStream;

import android.app.Activity;
import android.content.ContentValues;
import android.content.pm.ActivityInfo;
import android.graphics.PixelFormat;
import android.hardware.Camera;
import android.hardware.Camera.AutoFocusCallback;
import android.hardware.Camera.Face;
import android.hardware.Camera.FaceDetectionListener;
import android.hardware.Camera.PictureCallback;
import android.hardware.Camera.ShutterCallback;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore.Images.Media;
import android.view.LayoutInflater;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;

public class AndroidCamera extends Activity implements SurfaceHolder.Callback{

Camera camera;
SurfaceView surfaceView;
SurfaceHolder surfaceHolder;
boolean previewing = false;
LayoutInflater controlInflater = null;

Button buttonTakePicture;
TextView prompt;

final int RESULT_SAVEIMAGE = 0;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

getWindow().setFormat(PixelFormat.UNKNOWN);
surfaceView = (SurfaceView)findViewById(R.id.camerapreview);
surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(this);
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

controlInflater = LayoutInflater.from(getBaseContext());
View viewControl = controlInflater.inflate(R.layout.control, null);
LayoutParams layoutParamsControl
= new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT);
this.addContentView(viewControl, layoutParamsControl);

buttonTakePicture = (Button)findViewById(R.id.takepicture);
buttonTakePicture.setOnClickListener(new Button.OnClickListener(){

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
camera.takePicture(myShutterCallback,
myPictureCallback_RAW, myPictureCallback_JPG);
}});

LinearLayout layoutBackground = (LinearLayout)findViewById(R.id.background);
layoutBackground.setOnClickListener(new LinearLayout.OnClickListener(){

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub

buttonTakePicture.setEnabled(false);
camera.autoFocus(myAutoFocusCallback);
}});

prompt = (TextView)findViewById(R.id.prompt);
}

FaceDetectionListener faceDetectionListener
= new FaceDetectionListener(){

@Override
public void onFaceDetection(Face[] faces, Camera camera) {

if (faces.length == 0){
prompt.setText(" No Face Detected! ");
}else{
prompt.setText(String.valueOf(faces.length) + " Face Detected :) ");
}


}};

AutoFocusCallback myAutoFocusCallback = new AutoFocusCallback(){

@Override
public void onAutoFocus(boolean arg0, Camera arg1) {
// TODO Auto-generated method stub
buttonTakePicture.setEnabled(true);
}};

ShutterCallback myShutterCallback = new ShutterCallback(){

@Override
public void onShutter() {
// TODO Auto-generated method stub

}};

PictureCallback myPictureCallback_RAW = new PictureCallback(){

@Override
public void onPictureTaken(byte[] arg0, Camera arg1) {
// TODO Auto-generated method stub

}};

PictureCallback myPictureCallback_JPG = new PictureCallback(){

@Override
public void onPictureTaken(byte[] arg0, Camera arg1) {
// TODO Auto-generated method stub
/*Bitmap bitmapPicture
= BitmapFactory.decodeByteArray(arg0, 0, arg0.length); */

Uri uriTarget = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, new ContentValues());

OutputStream imageFileOS;
try {
imageFileOS = getContentResolver().openOutputStream(uriTarget);
imageFileOS.write(arg0);
imageFileOS.flush();
imageFileOS.close();

prompt.setText("Image saved: " + uriTarget.toString());

} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


camera.startPreview();
camera.startFaceDetection();
}};

@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
if(previewing){
camera.stopFaceDetection();
camera.stopPreview();
previewing = false;
}

if (camera != null){
try {
camera.setPreviewDisplay(surfaceHolder);
camera.startPreview();

prompt.setText(String.valueOf(
"Max Face: " + camera.getParameters().getMaxNumDetectedFaces()));
camera.startFaceDetection();
previewing = true;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
camera = Camera.open();
camera.setFaceDetectionListener(faceDetectionListener);
}

@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
camera.stopFaceDetection();
camera.stopPreview();
camera.release();
camera = null;
previewing = false;
}
}

 

Modify AndroidManifest.xml, to add permission of "android.permission.CAMERA", and set android:minSdkVersion="14".

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.exercise.AndroidCamera"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="14" />
<uses-permission android:name="android.permission.CAMERA"/>

<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".AndroidCamera"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

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

</manifest>

 

Download Source : Here

SOURCE : Android-er

Checking for WiFi Access (Kiểm tra sự tồn tại của Wifi)


Returns true if any WiFi access point is available in the vicinity of the device, else False

(Trả về true nếu có điểm truy cập Wifi ngược lại trả về false)

public boolean IsNetworkAvailable(Context context){
                   ConnectivityManager connectivity = (ConnectivityManager)
                                   context.getSystemService(Context.CONNECTIVITY_SERVICE);
                   if (connectivity == null) {
                  Toast.makeText(context, “None Available”, Toast.LENGTH_SHORT).show();
                   } else {
                      NetworkInfo[] info = connectivity.getAllNetworkInfo();
                      for(NetworkInfo inf : info){
                          if(inf.getTypeName().contains(“WIFI”))
                                  if(inf.isConnected())
                                          return true;
                      }
                   }
                   return false;
        }

How to Make an Activity Fullscreen (Làm thế nào để 1 Activity Full màn hình)


This code makes the current Activity Full-Screen. No Status-Bar or anything except the Activity-Window!

(Đây là đoạn code giúp Activity hiện tại Toàn màn hình. Không có status bar và tiêu đề..)

public class FullScreen extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                                WindowManager.LayoutParams.FLAG_FULLSCREEN);

        setContentView(R.layout.main);
    }
}