Show Notification when Air-plane mode change (Using Broadcast Receiver)

Hello guys!

Today I have a simple example code that demonstrate the use of Broadcast Receiver in Android, this tutorial also help you to understand how to show a Notification.

Ok now we start this example.

Step 1: Create a new class named “BroadCastRec” which is extended from BroadCastReceiver class:

public class BroadCastRec extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
sendNotification(context, "From broadcast", MainActivity.notificationID);
}

private void sendNotification(Context c, String msg, int id) {
PendingIntent contentIntent = PendingIntent.getActivity(c, 0,
new Intent(c, SecondActivity.class), 0);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
c).setSmallIcon(android.R.drawable.btn_star)
.setContentTitle("Title for notification")
.setAutoCancel(true)
.setDefaults(Notification.DEFAULT_ALL)
.setStyle(new NotificationCompat.BigTextStyle().bigText(msg))
.setContentText(msg)
.setContentIntent(contentIntent);

Notification notification = mBuilder.build();
notification.defaults |= Notification.DEFAULT_VIBRATE;
notification.defaults |= Notification.DEFAULT_SOUND;
NotificationManager manager = (NotificationManager) c.getSystemService(Context.NOTIFICATION_SERVICE);
manager.notify(id, notification); // mBuilder.build()

}
}

Step 2: Declare this receiver in manifest, notice the action name:

<receiver android:name=”com.example.admin.broadcastreceiver.BroadCastRec”>
<intent-filter>
<action android:name=”android.intent.action.AIRPLANE_MODE”/>
</intent-filter>
</receiver>

 

Step 3: MainActivity.java:

 

public class MainActivity extends Activity {
public static int notificationID = 100;
BroadCastRec receiver;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
receiver = new BroadCastRec();
}
}

Now let’s run our program on physical device and then try to change Air-plane mode.

Good luck!

Tìm kiếm nhị phân (ví dụ trên c++)

Ý tưởng tương tự thuật toán sắp xếp quá nổi tiếng QuickSort.

Sau mỗi bước tìm kiếm thì số phần tử trong lần xét sau chỉ còn 1 nửa. Cho nên thời gian thực thi của thuật tìm kiếm này là O(LogN).

sample:

 

<br />// mảng a chứa các phần tử đã được sắp xếp (điều kiện cần cho thuật toán này).

// n là số lượng phần tử trong mảng a này.

// x là phần tử cần tìm
int TimKiemNhiPhan(int a[MAX], int left, int right, int mid, int x)
{
if (left > right)return -1;
if (a[mid] == x)return mid;
if (a[mid] > x)return TimKiemNhiPhan(a, left, mid-1, (left+(mid-1))/2, x);
return TimKiemNhiPhan(a, mid + 1, right, (mid + 1 + right) / 2, x);
}

void Result()
{
int res = TimKiemNhiPhan(a, 0, n - 1, (n - 1) / 2, x);
if (vt == -1)
cout << "\nKhong tim thay"<<" "<< x;
else cout << "\nTim thay:"<<" "<<x << " "<<"tai vi tri la:" << vt;
}

Bài toán Mã đi tuần (ví dụ trên c++)

#include <iostream>
#include <iomanip>

using namespace std;

// Input
int n = 8;
int x, y;

// Output
int BanCo[8][8];

int dx[] = {-2, -1, +1, +2, +2, +1, -1, -2};
int dy[] = {+1, +2, +2, +1, -1, -2, -2, -1};

void Xuat()
{
for (int i=0; i<n; i++)
{
for (int j=0; j<n; j++)
{
cout << setw(3);
cout << BanCo[i][j] << " ";
}
cout << endl;
}
cout << endl;
}

// Tim 1 trong 8 o xung quanh cua (x,y) de dat Ma
void MaDiTuan(int x, int y, int buoc)
{
if (buoc > n*n)
Xuat();
else
{
// Xet 8 o xung quanh
for (int k=0; k<8; k++)
{
int xx = x + dx[k];
int yy = y + dy[k];

// Nằm trong bang nxn11111111111111111111
if (xx>=0 && yy>=0 && xx<n && yy<n)
if (BanCo[xx][yy]==0) // Chua có Mã
{
BanCo[xx][yy] = buoc;
//Xuat();
MaDiTuan(xx, yy, buoc+1);
BanCo[xx][yy]=0;
}
}
}
}

int main()
{
// Nhap x, y
x = 7;
y = 3;
n=8;

for (int i=0; i<n; i++){
for (int j=0; j<n; j++){
BanCo[i][j]=0;
}
}

int buoc=1;
BanCo[x][y] = buoc;
MaDiTuan(x, y, buoc+1);

return 0;
}

Tìm dãy con tăng dài nhất (Ví dụ đơn giản trên C++)

#include <iostream>
#include <vector>
using namespace std;

// Input
#define MAX 1010

int a[MAX]={7, 9, 15, 3, 9, 10, 7, 5};
int n=8;

// Output
int f[MAX];
int pre[MAX];

void TinhF()
{
// Khởi tạo
for (int i=0; i<n; i++)
pre[i]=-1;

f[0]=1;
for (int i=1; i<n; i++)
{
f[i]=1;
for (int j=0; j<i; j++){
if (a[j] <= a[i]){
if (f[i] < f[j]+1)
{
f[i] = f[j]+1;
pre[i] = j;
}
}
}
}
}
vector<int> daycontang;
void TruyVet()
{
int gtmax=f[0];
int vitri = 0;

for (int i=1; i<n; i++)
if (gtmax < f[i])
{
gtmax = f[i];
vitri=i;
}

// Tim day con tang dai nhat
for (int i=vitri; i!=-1; i=pre[i])
daycontang.push_back(a[i]);
int len = daycontang.size();
for (int i=len-1; i>=0; i--)
cout << daycontang[i] << " ";
cout << endl << "Do dai: " << gtmax;
}

int main()
{
TinhF();
TruyVet();
return 0;
}