[MTCB Android Head Units Q&A] agentdr8:
No guarantees that this actually works, but I got it to compile without errors, and compared the decompiled source against the original and the patches have been added.

package com.microntek.radio;

import android.app.Service;
import android.content.Intent;
import android.content.SharedPreferences;
import android.media.AudioManager;
import android.os.Handler;
import android.os.IBinder;

import lanchon.dexpatcher.annotation.*;

/*
* DexPatcher-based mods for MTCRadio -- based on test code from bruno_scrivo
* https://bitbucket.org/bruno_scrivo/mtcradioo/commits/a73438bfde417290f9b65a8f076e47f9f286cea5
*/

@DexEdit(defaultAction = DexAction.IGNORE)
public class RadioService extends Service {

@DexAdd
private Runnable AfRunnable;

private AudioManager am;
private int radioSignal;
private int mFreq;
private Handler handler;
private boolean taRunnableReset;
private Handler msgHandler;
boolean radioCheckValid;
boolean radioSt;
boolean radioTa;
boolean radioTp;
int radioPi;
String radioPsn;
int radioPty;
String radioRt;
private SharedPreferences app_preferences;

@DexIgnore
public RadioService() {
}

@DexIgnore
@Override
public IBinder onBind(Intent intent) {
return null;
}

@DexEdit(target = "init")
private void source_init() {
throw null;
}

@DexAdd
private void init() {
this.AfRunnable = new CreateRunnable();
source_init();
}

@DexAdd
class CreateRunnable implements Runnable {
public void run() {
int n1 = 80;
radioSignal = Integer.parseInt(am.getParameters("sta_radio_signal="));
if (RadioService.this.radioSignal < n1) {
RadioService.this.setFreq(RadioService.this.mFreq);
RadioService.this.setFreq(89500000);
RadioService.this.showFreq();
RadioService.this.showRds();
RadioService.this.showSt();
}
RadioService.this.handler.postDelayed(RadioService.this.AfRunnable, 1000);
}
}

@DexEdit(target = "onDestroy")
public void source_ondestroy() {
throw null;
}

@Override
@DexAdd
public void onDestroy() {
source_ondestroy();
this.handler.removeCallbacks(this.AfRunnable);
}

private void setFreq(int i) {
taRunnableReset = true;
msgHandler.removeMessages(4);
msgHandler.removeMessages(1);
msgHandler.removeMessages(2);
radioCheckValid = false;
am.setParameters((new StringBuilder()).append("ctl_radio_frequency=").append(i).toString());
radioSignal = 0;
radioSt = false;
radioTa = false;
radioTp = false;
radioPi = 0;
radioPty = 0;
radioPsn = "";
radioRt = "";
msgHandler.sendEmptyMessageDelayed(1, 15L);
msgHandler.sendEmptyMessageDelayed(4, 2000L);
saveFreqPreference(i);
Intent intent = new Intent("ACTION_HCT_REDIO_CHANNEL");
intent.putExtra("OPERATION", "REDIO_PLAY");
intent.putExtra("freq", (new StringBuilder()).append("").append(i).toString());
sendBroadcast(intent);
}

private void saveFreqPreference(int i) {
android.content.SharedPreferences.Editor editor = app_preferences.edit();
editor.putInt("CurrentFreq", i);
editor.commit();
}

private void showFreq() {
sendBroadcast(new Intent("com.microntek.radio.show_freq"));
}

private void showRds() {
sendBroadcast(new Intent("com.microntek.radio.show_rds"));
}

private void showSt()
{
sendBroadcast(new Intent("com.microntek.radio.show_st"));
}
}

It should be noted, since the patched apk has a different signature but same package name as the original apk (com.microntek.radio), you'd need to remove the original from /system/priv-app (or /system/app) and then place this one there. I'd recommend keeping a backup of the original in case something doesn't work right.