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!
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.
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.
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.
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!
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 객체의 배열로 반환되는데, 이 값을 이용하여 사진 촬영 시 사진 크기를 지정할 수 있습니다.
는 현재 뷰의 종횡비를 설정해주는 것으로 위 코드에서 카메라의 가로 세로 사이즈를 입력했습니다.카메라 디바이스 세팅과 종횡비 설정을 한 것 같네요 그럼 카메라에서 입력받은 이미지들을 담을 객체를 만들어야겠습니다.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()겠군요 아래 코드가 있습니다.
코드를 읽어보자면 카메라 디바이스에서 촬영요청을 담당할 객체(mPreviewBuilder)를 생성하고 그 객체가 타겟팅할 객체(mSurfaceViewHolder.getSurface())를 설정해줍니다. 그리고 카메라 디바이스에 대한 캡쳐세션을 생성해주는데 mSessionPreviewStateCallback이 들어가있고 아래와 같이 구현되어 있습니다.
SurfaceView는 View를 상속하는 클래스입니다. 일반적인 View보다 화면에 그리는 시간이 빨라(스레드 사용) 애니메이션을 그리거나 본 포스트처럼 카메라 화면을 디스플레이할 때 사용하기 좋은 클래스입니다. 더블 버퍼링 기법을 이용하여 SurfaceHolder가 Surface에 미리 그리고 이 Surface가 SurfaceView에 반영되는 방식입니다.
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가 종료되면 카메라 디바이스를 종료해야하므로 카메라 디바이스 체크 후 종료해줍니다.