반응형

Hello everyone,

Top 10 Must-Have Android Apps for Productivity

1. Trello

Trello is a project management tool that lets you organize your tasks and projects into boards, lists and cards. It’s a great tool for keeping track of deadlines and collaborating with others.

2. Evernote

Evernote is a note-taking app that lets you create and organize notes in various formats, including text, photos, audio and video. It’s a great tool for keeping track of to-do lists, ideas and notes during meetings.

3. Google Drive

Google Drive is a cloud storage service that lets you store and access your files from anywhere. It’s a great tool for keeping your files safe and easily accessible, especially if you work on multiple devices.

4. Pocket

Pocket is a bookmarking app that lets you save articles and videos to read and watch later. It’s a great tool for saving and organizing content that you want to read or watch when you have more time.

5. Forest

Forest is a productivity app that rewards you for staying focused. It lets you plant a tree in the app and the tree will grow as long as you stay focused on your task. It’s a great tool for staying focused and avoiding distractions.

6. IFTTT

IFTTT (If This Then That) is an automation app that lets you create applets to automate tasks between apps. It’s a great tool for automating repetitive tasks and saving time.

7. Slack

Slack is a team communication app that lets you chat and collaborate with your team in real-time. It’s a great tool for staying connected with your team and getting work done efficiently.

8. Grammarly

Grammarly is a grammar and spell-checking app that helps you improve your writing. It’s a great tool for improving your communication skills and avoiding embarrassing mistakes.

9. LastPass

LastPass is a password manager app that lets you store and manage your passwords securely. It’s a great tool for keeping your passwords safe and easily accessible.

10. Zoom

Zoom is a video conferencing app that lets you conduct meetings and webinars online. It’s a great tool for staying connected with your team and collaborating remotely.

In conclusion, these are the top 10 must-have Android apps for productivity that every professional should have on their device. Try them out and see how they can improve your work efficiency and productivity!

반응형
반응형

Emerging Trends in Android Development

Hello everyone,

Android development has come a long way since its inception. With the continuous evolution of the technology, new trends in Android development are emerging that are shaping the future of the industry.

Here are some of the emerging trends in Android development that you should know:

1. Kotlin

Kotlin has become the preferred programming language for Android development. With its concise syntax and enhanced safety features, Kotlin has made Android development faster and more efficient. Kotlin also offers seamless interoperability with Java, which makes it easier to integrate new features into existing Android apps.

2. Artificial Intelligence (AI)

AI is no longer a futuristic concept, and it has already found its way into Android app development. AI-powered Android apps can analyze user behavior, personalize content, and automate mundane tasks, which enhances the user experience. AI also enables developers to develop smarter apps that can adapt and learn from user interactions.

3. Instant Apps

Instant Apps are a game-changer in Android app development. Instant Apps allow users to use mobile apps without installation. This feature can improve user engagement and retention rates, as it eliminates the need for users to download and install apps. Instant Apps also reduce the app's size and increase the app's performance.

4. Internet of Things (IoT)

IoT is rapidly gaining ground in Android app development. IoT-based Android apps can control and monitor smart devices, such as home appliances, wearables, and home security systems. This technology helps developers to create innovative Android apps that can enhance the user experience and make life easier for users.

In conclusion, these trends in Android development are shaping the future of the industry and are worth keeping an eye on. By keeping up with these trends, Android developers can create innovative and effective Android apps that meet the changing needs of users.

Thank you for reading!

반응형
반응형

Top 10 New Android Features to Look Out for in 2021

Android has been constantly evolving, providing users with innovative features and updates. The year 2021 is no exception, with the launch of exciting new features that will enhance the experience of Android users. Here are the top 10 new Android features to look out for in 2021:

1. Improved Privacy Controls

Android 12 will introduce improved privacy controls that give users greater control over their data. Users will now have more specific control over what data apps have access to, such as their approximate location, microphone, and camera.

2. Enhanced Gesture Navigation

Android 12 will also introduce enhanced gesture navigation for a more intuitive and smoother experience. The new gestures will include a back gesture that is easier to access and can be customized to the user's preference.

3. Lock Screen Notifications

Android 12 will also make lock screen notifications more user-friendly and interactive. Users can now easily snooze notifications or reply to messages directly from the lock screen.

4. Gaming Dashboard

Android 12 will also enhance gaming experiences by introducing a gaming dashboard. Users can easily access game-related features and settings without leaving the game.

5. One-Handed Mode

Android 12 may also include a one-handed mode, making it easier for users to navigate their device with one hand. This mode will allow users to effectively access the top of the screen with a single thumb.

6. App Pairs

Android 12 will make it easier to multi-task by introducing app pairs. Users can now launch two apps at the same time and switch between them quickly and easily.

7. Improved Voice Access

Android 12 will also introduce improved voice access, allowing users to control their devices hands-free. Users can now navigate and execute commands with a simple voice prompt.

8. Material NEXT Design

Android 12 will also bring about a visual change to the interface with its Material NEXT design system. This will introduce a new set of design principles, emphasizing on customizable and responsive design.

9. UI Support for Foldable Devices

Android 12 will also introduce UI support for foldable devices. This means that the interface will be more intuitive and responsive to the different configurations of foldable devices.

10. Nearby Device Permissions

Android 12 will also introduce nearby device permissions that allow users to securely and easily share data between devices. This feature will enable users to enjoy more convenience and flexibility in data sharing.

In conclusion, with the introduction of new features in Android 12, users can expect a more efficient, user-friendly, and interactive experience. These new features will make the Android experience more personalized, intuitive, and secure.

반응형
반응형

Benefits of Using Android for Business Needs

Hello everyone, in today’s world where technology is intertwined with our lifestyles, businesses are no exception. With the advent of smartphones, businesses require mobile devices that are user-friendly, reliable, and secure. One of the most popular mobile operating systems for businesses is Android. Here are some of the benefits of using Android for business needs.

1. Open Source

One of the biggest advantages of Android is that it is open-source, meaning the software is available free of charge and can be customized and modified to meet specific business needs. This allows businesses to create tailor-made apps that are perfect for their requirements without incurring additional costs.

2. Wide Variety of Devices and Prices

Android is available on a wide range of devices from budget phones to high-end smartphones and tablets. This provides businesses with the flexibility to choose a device that matches their budget and business needs.

3. Integration with Google Apps

Android devices integrate seamlessly with Google Apps such as Gmail, Google Drive, and Google Calendar, which are widely used by businesses. This allows for better productivity and collaboration among employees.

4. Customized Security Features

Android offers various security features that can be customized to meet business security needs. For example, businesses can control access to confidential data, remotely wipe data from lost devices, and enforce encryption.

5. Easy App Distribution

Android app development and distribution is straightforward. Businesses can easily distribute apps to their employees via the Google Play Store or through in-house app stores. This makes it easy for businesses to deploy new apps and make them available to their employees.

In conclusion, Android is a versatile and user-friendly operating system that meets the needs of modern businesses. Its open-source nature, wide range of devices, integration with Google Apps, customized security features, and easy app distribution make it an ideal choice for businesses of all sizes.

반응형
반응형

10 Must-Have Android Apps for Productivity

Are you looking for ways to make your Android device more productive? Check out these 10 must-have Android apps that are designed to help you work smarter and get more done.

1. Google Drive

Google Drive is a cloud storage service that allows you to store and access your files from anywhere. You can create, edit, and share documents, spreadsheets, and presentations, and collaborate with others in real-time.

2. Microsoft Office

Microsoft Office is software that includes applications such as Word, Excel, and PowerPoint. With this app, you can create and edit documents on your Android device, and sync them with your computer or other devices.

3. Trello

Trello is a project management tool that allows you to organize tasks, collaborate with others, and track progress. You can create boards, cards, and lists to keep everything organized.

4. Evernote

Evernote is a note-taking app that allows you to capture, organize, and share information. You can create notes, take photos, and record audio, and access them from anywhere.

5. Todoist

Todoist is a task manager that allows you to create and track tasks, set due dates, and assign priorities. You can also collaborate with others, and sync your tasks across all your devices.

6. RescueTime

RescueTime is a time management app that tracks how you spend your time. It analyzes your usage patterns and provides insights into how you can be more productive.

7. Pocket

Pocket is a read-it-later app that allows you to save articles, videos, and other content for later. You can access your saved items from any device, and even read them offline.

8. LastPass

LastPass is a password manager that allows you to store and manage your passwords in one place. With this app, you only need to remember one master password to access all your other passwords.

9. CamScanner

CamScanner is a scanning app that allows you to scan, save, and share documents on the go. You can also convert your scanned documents into PDF files.

10. Grammarly Keyboard

Grammarly Keyboard is a keyboard app that helps you write better. It provides suggestions for grammar, punctuation, and spelling, and can even correct your typos as you type.

With these 10 must-have Android apps for productivity, you can stay organized, work smarter, and get more done. Try them out today!

반응형
반응형

https://wp94.tistory.com/33

이전 포스트에서 SurfaceView에 대해 알아보았습니다. Surface가 생성될 때 카메라 프리뷰를 설정하는 메소드를 실행해주었는데 본 포스트에서 그 메소드에 대해 알아보겠습니다. 

 

[안드로이드] 밑바닥부터 딥러닝 호환 카메라 앱 만들기 #1-1 SurfaceView

https://wp94.tistory.com/32 #1에서 MainActivity.java의 전체적인 소스코드를 봤습니다. 본 포스트에서부터 변수 선언 부분을 낱낱이 파헤쳐봅시다. [안드로이드] 밑바닥부터 딥러닝 호환 카메라앱 만들기 #

wp94.tistory.com

    private Handler mHandler;
    private ImageReader mImageReader;
    @TargetApi(19)
    public void initCameraAndPreview() {
        HandlerThread handlerThread = new HandlerThread("CAMERA2");
        handlerThread.start();
        mHandler = new Handler(handlerThread.getLooper());
        Handler mainHandler = new Handler(getMainLooper());
        try {
            String mCameraId = "" + CameraCharacteristics.LENS_FACING_FRONT; // 후면 카메라 사용

            CameraManager mCameraManager = (CameraManager) this.getSystemService(Context.CAMERA_SERVICE);
            CameraCharacteristics characteristics = mCameraManager.getCameraCharacteristics(mCameraId);
            StreamConfigurationMap map = characteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);

            Size largestPreviewSize = map.getOutputSizes(ImageFormat.JPEG)[0];
            Log.i("LargestSize", largestPreviewSize.getWidth() + " " + largestPreviewSize.getHeight());

            setAspectRatioTextureView(largestPreviewSize.getHeight(),largestPreviewSize.getWidth());

            mImageReader = ImageReader.newInstance(largestPreviewSize.getWidth(), largestPreviewSize.getHeight(), ImageFormat.JPEG,/*maxImages*/7);
            mImageReader.setOnImageAvailableListener(mOnImageAvailableListener, mainHandler);
            if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
                return;
            }
            mCameraManager.openCamera(mCameraId, deviceStateCallback, mHandler);
        } catch (CameraAccessException e) {
            Toast.makeText(this, "카메라를 열지 못했습니다.", Toast.LENGTH_SHORT).show();
        }
    }

camera2 API를 먼저 알아봅시다. camera2 API는 기존 camera API의 단순 기능들을 보완한 상위버전의 API라고 보시면 되겠습니다. 즉 기능이 더 많아졌다 정도로 생각하면 되겠습니다. 

HandlerThread는 스레드에 루퍼와 핸들러를 연결한 클래스입니다. 루퍼는 자신이 속한 스레드의 메시지큐에 추가되는 메시지를 기다리다가 꺼내서 이를 처리할 핸들러에 디스패치하는 기능을 합니다. 

위 소스코드를 읽어보자면 CAMERA2 HandlerThread 클래스를 선언하고 시작합니다. 돌아가고 있는 스레드의 루퍼(getLooper())를 이용해서 디스패치할 핸들러(mHandler)를 정의해줍니다. 스레드의 핸들러는 mHandler이고 메인 핸들러는 mainHandler로 정의해줍니다.이후 디바이스 기반 코드이기 때문에 권한 및 하드웨어 에러를 고려하여 try catch문으로 접근합니다. mCameraId는 전면 또는 후면 카메라 사용 키 값입니다. (전면 카메라가 셀카죠)

  • LENS_FACING_FRONT: 후면 카메라. value : 0
  • LENS_FACING_BACK: 전면 카메라. value : 1
  • LENS_FACING_EXTERNAL: 기타 카메라. value : 2

CameraManager 모든 카메라 관련 작업은 카메라 매니저와 함께합니다. 카메라 매니저를 통해 CameraCharacteristic을 가져옵니다 이건 말 그대로 카메라 특성을 담고있는 클래스라 보시면 됩니다. 위 소스코드에서 SCALER_STREAM_CONFIGURATION_MAP를 가져왔는데 이 안에 많은 정보들이 있으나 사용하는 정보는 getOutputSizes입니다.

getOutputSizes ( ) 함수에 이미지 포맷을 매개변수로 지정하면 지원하는 크기 목록이 Size 객체의 배열로 반환되는데, 이 값을 이용하여 사진 촬영 시 사진 크기를 지정할 수 있습니다.

출처: https://kkangsnote.tistory.com/48 [깡샘의 토마토]

setAspectRatioTextureView

는 현재 뷰의 종횡비를 설정해주는 것으로 위 코드에서 카메라의 가로 세로 사이즈를 입력했습니다.카메라 디바이스 세팅과 종횡비 설정을 한 것 같네요 그럼 카메라에서 입력받은 이미지들을 담을 객체를 만들어야겠습니다.ImageReader 객체를 정의해주고 파라미터로 가로, 세로, 파일 포맷, 버퍼 사이즈를 입력해줍니다. 그리고 리스너를 설정해주는데 위 코드에서 리스너를 커스텀하게 구현했습니다. 아래 리스너의 기능은 카메라에서 받은 이미지(바이트)를 버퍼에 넣고 바이트를 배열로 디코딩해준 후 비트맵으로 바꿔주는 기능입니다. 여기서 메인 핸들러에 할당한 이유는 카메라 스레드는 이미 카메라 데이터를 받아오는데 할당이 되어있는데 바이트2비트맵 연산까지 처리할 수 없기 때문에 메인 스레드에 할당하는겁니다.

private ImageReader.OnImageAvailableListener mOnImageAvailableListener = new ImageReader.OnImageAvailableListener() {
        @Override
        public void onImageAvailable(ImageReader reader) {

            Image image = reader.acquireNextImage();
            ByteBuffer buffer = image.getPlanes()[0].getBuffer();
            byte[] bytes = new byte[buffer.remaining()];
            buffer.get(bytes);
            final Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
            new SaveImageTask().execute(bitmap);
        }
    };

그 다음 카메라 허용에 대한 퍼미션 부분을 체크해주고

카메라 매니저의 오픈 카메라 메소드를 통해 카메라 세팅을 끝내줍니다. 여기서 파라미터로 deviceStateCallback객체가 존재하는데 다음과 같이 구현되어 있습니다.

private CameraDevice mCameraDevice;
private CameraDevice.StateCallback deviceStateCallback = new CameraDevice.StateCallback() {
        @Override
        public void onOpened(CameraDevice camera) {
            mCameraDevice = camera;
            try {
                takePreview();
            } catch (CameraAccessException e) {
                e.printStackTrace();
            }
        }

        @Override
        public void onDisconnected(@NonNull CameraDevice camera) {
            if (mCameraDevice != null) {
                mCameraDevice.close();
                mCameraDevice = null;
            }
        }

        @Override
        public void onError(CameraDevice camera, int error) {
            Toast.makeText(MainActivity.this, "카메라를 열지 못했습니다.", Toast.LENGTH_SHORT).show();
        }
    };

객체는 카메라가 열렸을 때(onOpened) 닫혔을 때(onDisconnected) 에러났을 때(onError)로 구성되어 있습니다. 볼만한건 열렸을 때 호출되는 takePreview()겠군요 아래 코드가 있습니다.

private CaptureRequest.Builder mPreviewBuilder;
    public void takePreview() throws CameraAccessException {
        mPreviewBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
        mPreviewBuilder.addTarget(mSurfaceViewHolder.getSurface());
        mCameraDevice.createCaptureSession(Arrays.asList(mSurfaceViewHolder.getSurface(), mImageReader.getSurface()), mSessionPreviewStateCallback, mHandler);
    }

코드를 읽어보자면 카메라 디바이스에서 촬영요청을 담당할 객체(mPreviewBuilder)를 생성하고 그 객체가 타겟팅할 객체(mSurfaceViewHolder.getSurface())를 설정해줍니다. 그리고 카메라 디바이스에 대한 캡쳐세션을 생성해주는데 mSessionPreviewStateCallback이 들어가있고 아래와 같이 구현되어 있습니다.

private CameraCaptureSession mSession;
private CameraCaptureSession.StateCallback mSessionPreviewStateCallback = new CameraCaptureSession.StateCallback() {
        @Override
        public void onConfigured(@NonNull CameraCaptureSession session) {
            mSession = session;

            try {

                mPreviewBuilder.set(CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE);
                mPreviewBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON_AUTO_FLASH);
                mSession.setRepeatingRequest(mPreviewBuilder.build(), null, mHandler);
            } catch (CameraAccessException e) {
                e.printStackTrace();
            }
        }

        @Override
        public void onConfigureFailed(@NonNull CameraCaptureSession session) {
            Toast.makeText(MainActivity.this, "카메라 구성 실패", Toast.LENGTH_SHORT).show();
        }
    };

객체는 세션 설정과 실패로 구성되어 있습니다. 세션 설정 안에는 모드와 지속적으로 촬영하는지, 자동 플래시 기능 이런 설정들이 담겨있네요 물론 하드웨어와 연동되기 때문에 트라이 캐치문을 사용했습니다. 그리고 위 설정을 반복 요청을 하도록 세션에 세팅해줍니다.

반응형
반응형

https://wp94.tistory.com/32

#1에서 MainActivity.java의 전체적인 소스코드를 봤습니다. 본 포스트에서부터 변수 선언 부분을 낱낱이 파헤쳐봅시다.

 

[안드로이드] 밑바닥부터 딥러닝 호환 카메라앱 만들기 #1 MainActivity.java

개요: 안드로이드 프로그래밍(자바)을 해서 딥러닝 기술이 적용되는 카메라앱을 만들어봅니다. 그리고 부분별로 소스코드를 분석합니다. 안드로이드 스튜디오를 이용합니다. 먼저, java파일은

wp94.tistory.com

    private SurfaceView mSurfaceView;
    private SurfaceHolder mSurfaceViewHolder;

SurfaceView는 View를 상속하는 클래스입니다. 일반적인 View보다 화면에 그리는 시간이 빨라(스레드 사용) 애니메이션을 그리거나 본 포스트처럼 카메라 화면을 디스플레이할 때 사용하기 좋은 클래스입니다. 더블 버퍼링 기법을 이용하여 SurfaceHolder가 Surface에 미리 그리고 이 Surface가 SurfaceView에 반영되는 방식입니다.

출처: https://m.blog.naver.com/muri1004/221054311714

SurfaceView로부터 상속받을 경우 디폴트로 구현해야 할 메소드가 있습니다.

  • public void surfaceChanged() : 뷰가 변경될 때 호출됩니다..
  • public void surfaceCreated() : 뷰가 생성될 때 호출됩니다.
  • public void surfaceDestroyed() : 뷰가 종료될 때 호출됩니다.

MainActivity.java 에서 다음과 같이 구현되어 있습니다.

public void initSurfaceView() {

        DisplayMetrics displayMetrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
        mDSI_height = displayMetrics.heightPixels;
        mDSI_width = displayMetrics.widthPixels;


        mSurfaceViewHolder = mSurfaceView.getHolder();
        mSurfaceViewHolder.addCallback(new SurfaceHolder.Callback() {

            @Override
            public void surfaceCreated(SurfaceHolder holder) {
                initCameraAndPreview();
            }

            @Override
            public void surfaceDestroyed(SurfaceHolder holder) {

                if (mCameraDevice != null) {
                    mCameraDevice.close();
                    mCameraDevice = null;
                }
            }

            @Override
            public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {

            }


        });

DisplayMetrics 클래스는 현재 윈도우의 정보(가로, 세로 픽셀 개수)를 가져오는 클래스입니다. 위에서 언급하였듯 SurfaceViewHolder가 먼저 Surface에 그려야하므로 정의해줍니다. 

surfaceCreated 메소드는 surface에 카메라 화면을 올릴 것이므로 카메라 프리뷰 메소드를 탑재해줍니다.

surfaceDestroyed 메소드는 surface가 종료되면 카메라 디바이스를 종료해야하므로 카메라 디바이스 체크 후 종료해줍니다.

반응형

+ Recent posts